Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net PreRender上GridView ItemTemplate字段中的数据不可用_Asp.net_Gridview_Itemtemplate - Fatal编程技术网

Asp.net PreRender上GridView ItemTemplate字段中的数据不可用

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

我有这种情况

ascx包含以下GridView:

<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;
    }