【问题标题】:How do i preserve the state of a control inside gridview with paging in asp.net?如何通过asp.net中的分页来保留gridview中控件的状态?
【发布时间】:2013-10-03 18:02:25
【问题描述】:

我已经在这个 GridView 中添加了一个 TextBox 的验证,但是这个验证只对 GridView 的当前页面有效(它不适用于 GridView 的前一页和后一页)。

<asp:GridView ID="Grd1" runat ="server" Width ="100%" AllowPaging ="true" pagesize="5">
  <Columns>
    <asp:BoundField HeaderText="Name" DataField="NM" ItemStyle-Width="300px" HeaderStyle-Width="300px" HeaderStyle-Wrap="false" ItemStyle-Wrap="false" />
    <asp:TemplateField HeaderText="Size (GB)">
      <ItemTemplate>
        <asp:TextBox ID="txtSize" runat="server" Width="100px"></asp:TextBox>
      </ItemTemplate>
    </asp:TemplateField>
  </Columns>
</asp:GridView>

<asp:Button ID="btnAdd" runat="server" Text="Save" OnClick="btnAdd_Click" />

<script language="javascript" type="text/javascript">
    function IsValidateAdd() {
        if (validateGridTextBox() == false)
            { return false; }
    }

    function validateGridTextBox() {
        var flag = false;
        var dropdowns = new Array(); //Create array to hold all the dropdown lists.
        var gridview = document.getElementById('<%=Grd1.ClientID %>'); //grvDMODetails is the id of ur gridview.

        dropdowns = gridview.getElementsByTagName('input'); //Get all dropdown lists contained in Grd1.            
        for (var i = 0; i < dropdowns.length; i++) {
            if (dropdowns.item(i).value != "") //If dropdown has no selected value
            {
                flag = true;
            }
            else 
            {
                flag = false;
                break;
            }
        }

        if (flag == false) 
        {
            alert('Please enter Table Size.');
            return flag;
        }

</script>

后面的代码:

btnAddDM.Attributes.Add("onclick", "return IsValidateAdd();");

【问题讨论】:

  • 你的验证控制标记在哪里
  • 可能是客户端验证
  • 所以当页面被回发时,因为这就是你所说的场景,你看到输出的 HTML 中呈现的“onclick”了吗?
  • 在实际保存 gridview 数据之前,我想验证文本框应该在 gridview 的所有页面中都有值
  • 您的“validateGridTextBox”函数缺少右括号。我不知道这是否给您带来任何麻烦,但这并不好=)

标签: c# javascript asp.net gridview paging


【解决方案1】:

当您通过上一页或下一页导航时,网格视图部分已更改,但 javascript 函数已绑定到原始网格视图。这就是它不起作用的原因。

如果你想要它工作,有 2 个解决方案

1,当你导航到其他页面时,再次手动绑定javascript验证功能。

2、给文本框控件添加onclientclick属性,如

<asp:TextBox ID="txtSize" runat="server" Width="100px" onClientClick="validateGridTextBox(this)"></asp:TextBox>

并相应地更改您的 validateGridTextBox javascript 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多