webForumDet fria alternativet

Max 300 ord

7 svar · 416 visningar · startad av MagnusJ

MagnusJMedlem sedan apr. 2004150 inlägg
#1

Hej

Hur kan man göra för att få så att ett inlägg ur en databas visas med max 300 ord?

m_soderlundMedlem sedan sep. 20026 425 inlägg
#2

Du kan använda dig av left().

left(databinder.eval(container.dataitem,"inlägg"),300)
JonMedlem sedan juli 20011 304 inlägg
#3

Fast då blit det väl 300 bokstäver?
Du får gå på mellanslagen. En grov metod är att loopa igenom strängen och bygga upp en ny. sluta efter 300 mellanslag.

MagnusJMedlem sedan apr. 2004150 inlägg
#4

Måste man skriva nått i codebehind-filerna?

<%# left(DataBinder.Eval(Container.DataItem, "Inlagg").ToString(),300)%>

"The name 'left' does not exist in the class or namespace 'ASP.start_ascx'"

EDIT:

Jon, vi skrev visst samtidigt :)

Är inte så noga om det är 300 bokstäver, behöver bara utöka lite då. Ska ha det på en startsida, det ska vara inledningen till senaste artikeln.

maxMedlem sedan jan. 200090 inlägg
#5

Hej MagnusJ

Prova gärna denna metod.

I aspx sidan läggs detta anrop till den publika funktionen Truncate där du anger hur många tecken som skall visas i din label eller textruta eller vad du använder vid presentation av data.

<asp:Label id=Label1 runat="server" Text='<%# Truncate(DataBinder.Eval(Container, "DataItem.NewsText"), 300) %>'>
</asp:Label>

I din codebehind (vb) har du denna funktionen. Detta sätter max de tecken du skickar in och avsluta med ...

Public Function Truncate(ByVal input As String, ByVal characterLimit As Integer)
    Dim output As String = input

    If output.Length \> characterLimit AndAlso characterLimit \> 0 Then
        output = output.Substring(0, characterLimit)
        If Not (input.Substring(output.Length, 1) = " ") Then
            Dim LastSpace As Integer = output.LastIndexOf(" ")
            If Not (LastSpace = -1) Then
                output = output.Substring(0, LastSpace)
            End If
        End If
        output += "..."
    End If
    Return output

End Function

Lycka till.

Vill du köra koden i C# rekommenderas denna länk vid forma om vb till nämnda kod http://www.developerfusion.com/utilities/convertvbtocsharp.aspx

MagnusJMedlem sedan apr. 2004150 inlägg
#6

Testade det där:

Får det här felmeddelandet:
Compiler Error Message: CS1502: The best overloaded method match for 'start.Truncate(string, int)' has some invalid arguments

<%# Truncate(DataBinder.Eval(Container, "DataItem.Inlagg"), 300) %>

och

		public object Truncate(string input, int characterLimit)
		{
			string output = input;
			if (output.Length > characterLimit && characterLimit > 0) 
			{
				output = output.Substring(0, characterLimit);
				if (!((input.Substring(output.Length, 1) == " "))) 
				{
					int LastSpace = output.LastIndexOf(" ");
					if (!((LastSpace == -1))) 
					{
						output = output.Substring(0, LastSpace);
					}
				}
				output += "...";
			}
			return output;
		}
renholmMedlem sedan apr. 20012 266 inlägg
#7
<%# Truncate((string)DataBinder.Eval(Container, "DataItem.Inlagg"), 300) %>

Eller

<%# Truncate(DataBinder.Eval(Container, "DataItem.Inlagg").ToString(), 300) %>
MagnusJMedlem sedan apr. 2004150 inlägg
#8

Tack för hjälpen, funkar prima! :)

136 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)