以前做SmartClient相当于C/S结构的程序,使用GridView时将某一列隐藏设置其Visalbe为 false即可,今天做GridView时也是用这种思维进行处理的,结果TemplateField 中的ItemTemplate设置为false,客户端此列为空,细想应该是在服务端此列直接没有处理。思考研究使用以下方法,使用层将需隐藏的数据屏敝而PostBack处理时,可以通过反射寻到隐藏数据:
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="fld_Name"
EmptyDataText="没有可显示的数据记录。" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate><asp:CheckBox ID="cBoxChecked" runat="server" /></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<div style="visibility:hidden; height:0px; width:0px;">
<asp:TextBox id="txtID" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"fld_ID")%>'/>
<asp:TextBox id="txtChecked" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"fld_IsSelected")%>' />
</div>
<%#DataBinder.Eval(Container.DataItem,"fld_Name")%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SDSoureOrderCustom" runat="server" SelectCommand="select * from T_orderschema">
</asp:SqlDataSource>
</div>
<div>
<asp:Button ID="btnUpdate" runat="server" OnClick="btnUpdate_Click" Text="更新选中" />
</div