adgang til controller i datagrid
Jeg har et datagrid i en usercontrolasp:DataGrid
ID='grid'
CellPadding='4'
CellSpacing='0'
Border='0'
Width='100%'
AutoGenerateColumns='false'
GridLines='None'
OnDeleteCommand='OnDelete'
OnEditCommand='OnEdit'
OnCancelCommand='OnCancel'
OnUpdateCommand='OnUpdate'
ItemStyle-VerticalAlign='top'
ShowFooter='true'
Runat='Server'>
<EditItemStyle CssClass='tableEditItem' />
<HeaderStyle CssClass='tableHeader' />
<ItemStyle CssClass='tableItem' />
<AlternatingItemStyle CssClass='tableAlternatingItem' />
<FooterStyle CssClass='tableFooter' />
<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<asp:Label Runat=server>Name</asp:Label>
<asp:Label ID="lblItemName" Runat=server><%#((KeyedReference)Container.DataItem).KeyName%></asp:Label>
<br>
<asp:Label Runat=server>Value</asp:Label>
<asp:Label ID="lblItemValue" Runat=server><%#((KeyedReference)Container.DataItem).KeyValue%></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:Label Runat=server>Name</asp:Label><asp:DropDownList ID="dropTModels" OnSelectedIndexChanged="drop_Changed" DataSource=<%#keyNames%> Runat=server/>
<asp:TextBox ID="txtItemName" Runat=server>"fgsdfg"</asp:TextBox>
<br>
<asp:Label Runat=server>Value</asp:Label><asp:TextBox ID="txtItemValue" Runat=server></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderStyle-Width='150px'>
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<asp:Button ID="btnEdit" Text="Edit" CommandName='Edit' Runat=server/>
<asp:Button ID="btnDelete" Text="Delete" CommandName='Delete' Runat=server/>
</ItemTemplate>
<EditItemTemplate>
<asp:Button ID="btnOK" Text="Update" CommandName='Update' Runat=server/>
<asp:Button ID="btnCancel" Text="Cancel" CommandName='Cancel' Runat=server/>
</EditItemTemplate>
<FooterTemplate>
<asp:Button ID="btnAdd" OnClick="OnAdd" Text="Add category item" Runat=server/>
</FooterTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
når der trykkes på knappen "btnEdit"
<asp:Button ID="btnEdit" Text="Edit" CommandName='Edit' Runat=server/>
skal editTemplate vises med de indtastede værdier vist i hver deres TextBox.
eventhandler for btnEdit:
protected void OnEdit(object sender, DataGridCommandEventArgs e)
{
grid.EditItemIndex=e.Item.ItemIndex;
kRefColl =(KeyedReferenceCollection)Session["kRefColl"];
KeyedReference kRef = kRefColl[e.Item.ItemIndex];
keyName = kRef.KeyName;
keyValue = kRef.KeyValue;
grid.DataSource=kRefColl;
grid.DataBind();
TextBox box = (TextBox)(e.Item.FindControl("txtItemName"));
box.Text = "keyName";
}
her sker en NullReferenceException på mit box object.
kan det have noget at gøre med at mit dataGrid ikke er i editmode når der trykkes på edit, og derfor "eksisterer" TextBoxen ikke?
hvordan kan jeg ellers få fat i den?
