Ik heb een eenvoudig gridje met de volgende code:
om de text van de button te bepalen gebruik ik de RowCreated event in my code behind:
Echter, als ik nu de select button klik, komen alle kolommen terug uit de viewstate, maar bovenstaand event werkt niet omdat e.Row.DataItem dit keer null is.
Nu wil ik toch niet voor elke postback de data source opnieuw binden, moet ik handmatig de teksten in de viewstate opslaan en via de if (dgProducts.DataSource != null) controlleren ofdat ik mijn gegevens uit de datasource moet halen danwel de viewstate?
Alvast bedankt.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
| <asp:GridView ID="dgProducts" runat="server" AutoGenerateColumns="False" OnRowCreated="dgProducts_RowCreated"> <Columns> <asp:BoundField DataField="ProductId" HeaderText="ID" ReadOnly="True" /> <asp:BoundField DataField="Name" HeaderText="Name" /> <asp:BoundField DataField="Model" HeaderText="Model" /> <asp:TemplateField HeaderText="Attributes" ShowHeader="False"> <ItemTemplate> <asp:Button ID="btnAttributes" runat="server" CausesValidation="false" CommandName="" /> </ItemTemplate> </asp:TemplateField> <asp:CommandField ShowSelectButton="True" /> </Columns> </asp:GridView> |
om de text van de button te bepalen gebruik ik de RowCreated event in my code behind:
C#:
1
2
3
4
5
6
7
| protected void dgProducts_RowCreated(object sender, GridViewRowEventArgs e) { if (dgProducts.DataSource != null) if (e.Row.RowType == DataControlRowType.DataRow) ((Button)e.Row.Cells[3].FindControl("btnAttributes")).Text = string.Format("Attributes [{0}]", GetAttributeCount(((ProductEntity)e.Row.DataItem).ProductId)); } |
Echter, als ik nu de select button klik, komen alle kolommen terug uit de viewstate, maar bovenstaand event werkt niet omdat e.Row.DataItem dit keer null is.
Nu wil ik toch niet voor elke postback de data source opnieuw binden, moet ik handmatig de teksten in de viewstate opslaan en via de if (dgProducts.DataSource != null) controlleren ofdat ik mijn gegevens uit de datasource moet halen danwel de viewstate?
Alvast bedankt.