Asp.net PreRender上GridView ItemTemplate字段中的数据不可用
我有这种情况 ascx包含以下GridView:Asp.net PreRender上GridView ItemTemplate字段中的数据不可用,asp.net,gridview,itemtemplate,Asp.net,Gridview,Itemtemplate,我有这种情况 ascx包含以下GridView: <asp:GridView ID="dataTable" runat="server" > <Columns> <asp:TemplateField HeaderText="Key"> <ItemTemplate> <%# ((KeyValuePair<string, string>)(Containe
<asp:GridView ID="dataTable" runat="server" >
<Columns>
<asp:TemplateField HeaderText="Key">
<ItemTemplate>
<%# ((KeyValuePair<string, string>)(Container.DataItem)).Key%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Value">
<ItemTemplate>
<%# ((KeyValuePair<string, string>)(Container.DataItem)).Value%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
它没有价值。然后网格被完美渲染,每个值都到位。
有办法解决这个问题吗 您可以像这样放置标签控件:
<asp:TemplateField HeaderText="Key">
<ItemTemplate>
<asp:Label runat="server" Text="<%# ((KeyValuePair<string, string>)(Container.DataItem)).Key%>"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
或者类似于消费者页面的预呈现:
protected void Page_PreRender(object sender, EventArgs e)
{
Label lbl = dataTable.Rows[0].Cells[0].Controls[1] as Label;
string t = lbl.Text;
}
protected void Page_PreRender(object sender, EventArgs e)
{
GridView dataTable = dataTableWebUserControl1.FindControl("dataTable") as GridView;
Label lbl = dataTable.Rows[0].Cells[0].Controls[1] as Label;
string t = lbl.Text;
}
我在visual studio中测试了此代码并为我工作。。。您提到的PreRender事件处理程序是OnPreRender,自动连接的实际事件处理程序是Page_PreRender,这可能是问题所在,当然,您完全正确。问题是我正在读取cell Text属性,但现在它由Label/Literal呈现,因此这是要检查的控件。谢谢你的帮助!:)
protected void Page_PreRender(object sender, EventArgs e)
{
Label lbl = dataTable.Rows[0].Cells[0].Controls[1] as Label;
string t = lbl.Text;
}
protected void Page_PreRender(object sender, EventArgs e)
{
GridView dataTable = dataTableWebUserControl1.FindControl("dataTable") as GridView;
Label lbl = dataTable.Rows[0].Cells[0].Controls[1] as Label;
string t = lbl.Text;
}