Datagrid længde af tekst og layout
Jeg har en datagrid med edit og delete, som jeg binder data til, men én af kolonnerne kan godt komme til at blive temmelig lang, og hvis teksten i denne er længere en fx 20 tegn, vil jeg gerne ha der kun vises 20 tegn og "...". Jeg har prøvet at løse det i GalleryGrid_OnItemDataBound i efterfølgende kode. Jeg kan godt skrive en tekst i den, og det fungere også, men så snart jeg trykker edit kommer fejlen:System.ArgumentOutOfRangeException
i linien:
TextBox t2 = (TextBox)line.Cells[6].Controls[0];
Jeg har koden herunder:
"Select Id,HeadLine,Text from Gallerys where SiteId="+Session["SiteId"].ToString();
...Databind...
protected void GalleryGrid_OnItemDataBound(object sender, DataGridItemEventArgs e)
{
//Hides ID column (http://eksperten.dk/spm/534513)
e.Item.Cells[4].Visible = false;
String Text = e.Item.Cells[6].Text;
if(Text.Length>20)
{
Text=Text.Substring(0,20)+"...";
}
e.Item.Cells[6].Text=Text;
//Comfirm box:
if(e.Item.FindControl("DeleteLink") != null)
{
((LinkButton) e.Item.FindControl("DeleteLink")).Attributes.Add("onClick", "return confirm('Are you sure you wish to delete this item?');");
}
}
...
private void GalleryGrid_Edit(Object sender, DataGridCommandEventArgs e)
{
GalleryGrid.EditItemIndex = (int)e.Item.ItemIndex;
BindData();
DataGridItem line = GalleryGrid.Items[e.Item.ItemIndex];
AddText=Session["AddText"].ToString();
//AddText styrer om t2 skal bruges
if(AddText.Equals("true")){
TextBox t2 = (TextBox)line.Cells[6].Controls[0];
t2.Width = Unit.Pixel(170);
t2.Height = Unit.Pixel(70);
t2.TextMode = TextBoxMode.MultiLine;
}
}
...
<asp:DataGrid id="GalleryGrid" runat="server" CellPadding="4" AllowPaging="True" PageSize="15" OnItemDataBound="GalleryGrid_OnItemDataBound" AutoGenerateColumns="True" OnUpdateCommand="GalleryGrid_Update" OnCancelCommand="GalleryGrid_Cancel" OnEditCommand="GalleryGrid_Edit" OnDeleteCommand="GalleryGrid_Delete" DataKeyField="Id">
<HeaderStyle font-bold="True"></HeaderStyle>
<EditItemStyle backcolor="PeachPuff"></EditItemStyle>
<ItemStyle wrap="False" verticalalign="Top"></ItemStyle>
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:linkbutton id="DeleteLink" runat="server" text="Delete" commandname="Delete" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update" HeaderText="Text" CancelText="Cancel" EditText="Edit"></asp:EditCommandColumn>
<asp:HyperLinkColumn Text="Edit/Add" DataNavigateUrlField="ID" DataNavigateUrlFormatString="EditGallery.aspx?Id={0}" HeaderText="Pictures"></asp:HyperLinkColumn>
<asp:TemplateColumn>
<HeaderTemplate>
-
</HeaderTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
