日期:2014-05-17  浏览次数:20387 次

gridview编辑状态下templatefield不可见(visible=false)时取不到控件的值
页面中有一个gridview,绑定了一个数据表。数据表中有很多字段,而gridview中只需要更新其中部分字段,因此将不需要更新(即保留原有内容)的字段在gridview中设为visible=false,如下面所示:
HTML code
<asp:TemplateField HeaderText="Description" SortExpression="Description" 
            Visible="False">
            <ItemTemplate>
                <asp:Label ID="Label14" runat="server" Text='<%# Bind("Description") %>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="TextBox12" runat="server" Text='<%# Bind("Description") %>'></asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateField>


点击更新后,Debug跟踪发现,原本Text属性为"Test"的TextBox12,在更新过程中值为空,即“""”。而若将包含该字段的TemplateField的Visible属性设为True后,则问题解决。这是什么原因 ?如何在TemplateField的Visible为False时仍能获取控件的值,该如何解决?谢谢!

P.S.:嫌麻烦,更新按钮的代码没有改动,使用gridview自动生成的代码,问题在此?

------解决方案--------------------
不要对整个模板列设置不可见,你要做的仅仅是编辑列里设置enabled而已

HTML code
 <EditItemTemplate>
                <asp:TextBox ID="TextBox12" runat="server" Text='<%# Bind("Description") %>' [color=#FF0000]enabled=false[/color]></asp:TextBox>
            </EditItemTemplate>