您好我有以下网格视图
<asp:GridView ID="grdSettings" runat="server" Height="400px" Width="100%"
AutoGenerateColumns="false" >
<Columns>
<asp:TemplateField HeaderText="XYZ" BoundFieldName="XYZTypeName">
<ItemTemplate>
<asp:Label ID="lblCustomerName" runat="server" Text='<%# Bind("CustomerName") %>'>
</asp:Label>
<asp:Label ID="lblCostumerId" runat="server" Text='<%#Bind("CustomerId") %>'></asp:Label>
</asp:TemplateField>
</Columns>
</asp:GridView>
由Customer of List约束,类如下
Class Customer
{
public string CustomerName { get; set; }
public int CustomerId { get; set; }
}
现在,在一个名为GetGridStuff()的方法中,我需要迭代每一列并获取绑定到模板字段中控件的类型。例如,在模板字段中的第一个控件的情况下
<asp:Label ID="lblCustomerName" runat="server" Text='<%# Bind("CustomerName") %>' >
</asp:Label>
我需要知道它包含哪种类型的属性数据,在这种情况下是它的CustomerName。我需要在运行时动态地获取它,以便在程序的一部分中编写代码,而不知道这个网格结构。我有网格对象,我可以访问所有属性。
答案 0 :(得分:1)
让我试试这个,离开编码已超过5年了,如果我理解正确的问题,你可能想通过服务器端代码处理它。
查找名为ItemBound
的事件(或类似的原谅我的记忆),它为您提供当前行(属性)中所有项目的值。您还需要声明临时控件类型(标签,文本框等),并使用具有适当类型转换的e.FindControl
为这些控件分配相应的值,例如: Label l = (Label)e.Findcontrol("Name")
这种方法的缺点是你应该避免过多的过程,因为它将在创建网格的每一行上执行。
如果您仍然需要一个精确的代码来处理问题,请告诉我,否则此描述至少应该帮助您查找行级别事件来破解问题,并鼓励您坚持技术论坛:)