Gridview中,可以使用TemplateField作为列,使列中可以放置textbox、dropdownlist等其他控件,绑定数据时,把Text属性等于<%#Eval("DataField") %>,这里只能用<%# %>不能用=,因为要调用Eval()函数。这样就可以在你的嵌入控件中获取到你的数据并显示。而想dropdownlist这些需要绑定数据的,如果需要的话,可以使用onrowdatabound的事件来控制每行绑定不同的数据。
<asp:TemplateField HeaderText="表头显示" HeaderStyle-Width="80px">
<ItemTemplate>
<asp:TextBox ID="ID" runat="server" Text='<%#Eval("DataField") %>' Width="80px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
像这样可以在Gridview中嵌入你需要的控件,再绑定相应的数据。或者你要把数据处理后再显示,可以用<%# function(Eval(DataField)) %>,这样调用后台的函数。
<asp:TemplateField HeaderText="表头显示" HeaderStyle-Width="80px">
<ItemTemplate>
<Lable><%#function(Eval("DataField1"), Eval("DataField2"))%></Lable>
</ItemTemplate>
</asp:TemplateField>
而当你想得到Gridview中嵌入的控件中,得到里面的数据,cs文件中定义一个GridViewRow的对象,并用foreach语句逐次取得每个Gridview行数据,再在里面定义一个你嵌入控件的对象而且使用FindControl(“你定义的ID”)这样就可以寻找到你嵌入的控件。如找到上面嵌入的TextBox控件的Text值如下:
foreach (GridViewRow gvr inGridview.Rows)
string TBtxt = (TextBox)gvr.FindControl("ID")).Text;