webForumDet fria alternativet

Max 300 ord

.NET

7 svar · 418 visningar · startad av MagnusJ

Medlem sedan apr. 2004150 inlägg
Frågan#1

Hej

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

Medlem sedan sep. 20026 425 inlägg
#2

Du kan använda dig av left().

left(databinder.eval(container.dataitem,"inlägg"),300)
Medlem 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.

Medlem 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.

Medlem 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

Medlem 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;
		}
Medlem sedan apr. 20012 266 inlägg
#7
<%# Truncate((string)DataBinder.Eval(Container, "DataItem.Inlagg"), 300) %>

Eller

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

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

263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)