繁体   English   中英

检查所需的字段验证后如何将文本框值保留在asp.net gridview中

[英]how to keep the textbox values in asp.net gridview after checking the required field validation

我有一个带有插入,编辑,更新,删除操作的常规gridview,如下图所示:

网格视图

在将数据插入数据库之前,我正在对文本框进行验证(如果文本框已填充或为空),如下所示:

if (txtNewID.Text == "")
{
    string message = "Please enter ID";
    ScriptManager.RegisterClientScriptBlock(Page, this.GetType(), "Alert", "alert('" + message + "')", true);
    isValid = false;              
}

但是,在单击警报消息的“确定”按钮之后,我在必需的文本框中添加的值将丢失。 如何将文本框的值保留在gridview中?

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Code, Type" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowDataBound="GridView1_RowDataBound" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowCommand="GridView1_RowCommand" ShowFooter="True" OnRowDeleting="GridView1_RowDeleting"> 
    <Columns> 
      <asp:UpdatePanel ID="UpdatePanel1" runat="server">
      <ContentTemplate>  
        <tr>
        <td class="style1" >
        <asp:GridView ID="gridID" DataKeyNames="Tracker_ID , Current_Status" runat="server" 
                GridLines="Both" Width="600px" BorderColor="Black"
                ShowFooter="true" AutoGenerateColumns="false" 
                onrowcancelingedit="gridID_RowCancelingEdit" 
                onrowediting="gridID_RowEditing" onrowcommand="gridID_RowCommand" 
                onrowdeleting="gridID_RowDeleting" onrowdatabound="gridID_RowDataBound" onrowupdating="gridID_RowUpdating" 
                >
        <Columns>
        <asp:TemplateField HeaderStyle-BackColor="#1B7AE0" HeaderStyle-Font-Size="10" HeaderText="ID#"> 
        <EditItemTemplate> 
      <asp:TextBox ID="ID" BorderWidth="1" Text='<%# Eval("ID") %>' Width="50px" runat="server"></asp:TextBox> 
    </EditItemTemplate> 
    <FooterTemplate> 
      <asp:TextBox ID="txtNewID" BorderWidth="1" Width="50px" runat="server"></asp:TextBox> </FooterTemplate> 
    <ItemTemplate> 
      <asp:Label ID="lblID" Font-Size="Smaller" runat="server" Text='<%# Bind("ID") %>'></asp:Label> 
    </ItemTemplate> 

    <HeaderStyle BackColor="#1B7AE0" Font-Size="10pt"></HeaderStyle>
    </asp:TemplateField> 

    <asp:TemplateField HeaderText="ID Description"   HeaderStyle-BackColor="#1B7AE0" HeaderStyle-Font-Size="10"> 
        <EditItemTemplate> 
      <asp:TextBox ID="IDDesc" Text='<%# Eval("ID_Description") %>' Width="99px"  BorderWidth="1" runat="server"></asp:TextBox> 
    </EditItemTemplate> 
    <FooterTemplate> 
      <asp:TextBox ID="txtNewIDDesc" BorderWidth="1" Width="99px" runat="server"></asp:TextBox> </FooterTemplate> 
    <ItemTemplate> 
      <asp:Label ID="lblIDDesc" Font-Size="Smaller" Text='<%# Bind("ID_Description") %>' runat="server"></asp:Label> 
    </ItemTemplate> 
    <HeaderStyle BackColor="#1B7AE0" Font-Size="10pt"></HeaderStyle>
    </asp:TemplateField> 

    <asp:TemplateField HeaderText="HCL Author" HeaderStyle-BackColor="#1B7AE0" HeaderStyle-Font-Size="10"> 
        <EditItemTemplate> 
      <asp:TextBox ID="txtHclAuthor" Text='<%# Eval("HCL_Author") %>' Width="95px" BorderWidth="1" runat="server"></asp:TextBox> 
    </EditItemTemplate> 
    <FooterTemplate> 
      <asp:TextBox ID="txtNewHclAuthor"  BorderWidth="1" Width="95px" runat="server"></asp:TextBox> </FooterTemplate> 
    <ItemTemplate> 
      <asp:Label ID="lblHclAuthor" Font-Size="Smaller" Text='<%# Bind("HCL_Author") %>' runat="server"></asp:Label> 
    </ItemTemplate> 
    <HeaderStyle BackColor="#1B7AE0" Font-Size="10pt"></HeaderStyle>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="Xerox Author" HeaderStyle-BackColor="#1B7AE0" HeaderStyle-Font-Size="10"> 
        <EditItemTemplate> 
      <asp:TextBox ID="txtXeroxAuthor" Text='<%# Eval("Xerox_Author") %>' Width="95px" BorderWidth="1" runat="server"></asp:TextBox> 
    </EditItemTemplate> 
    <FooterTemplate> 
      <asp:TextBox ID="txtNewXeroxAuthor" BorderWidth="1" Width="95px" runat="server"></asp:TextBox> </FooterTemplate> 
    <ItemTemplate> 
      <asp:Label ID="lblXeroxAuthor" Font-Size="Smaller" Text='<%# Bind("Xerox_Author") %>' runat="server"></asp:Label> 
    </ItemTemplate> 
    <HeaderStyle BackColor="#1B7AE0" Font-Size="10pt"></HeaderStyle>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="Track" HeaderStyle-BackColor="#1B7AE0" HeaderStyle-Font-Size="10"> 
        <EditItemTemplate> 
      <asp:TextBox ID="IDTrack" Text='<%# Eval("Track") %>' Width="80px" BorderWidth="1" runat="server"></asp:TextBox> 
    </EditItemTemplate> 
    <FooterTemplate> 
      <asp:TextBox ID="txtNewIDTrack" BorderWidth="1" Width="80px" runat="server"></asp:TextBox> </FooterTemplate> 
    <ItemTemplate> 
      <asp:Label ID="lblIDTrack" Font-Size="Smaller" Text='<%# Bind("Track") %>' runat="server"></asp:Label> 
    </ItemTemplate> 
    <HeaderStyle BackColor="#1B7AE0" Font-Size="10pt"></HeaderStyle>
    </asp:TemplateField> 
     </Columns>

        </asp:GridView>
        </td>       </tr>      </ContentTemplate>
</asp:UpdatePanel> 

每当PostBack事件被调用时,我们都可能丢失页面数据。您是否将网格放置在了updatepanel中,否则如果您不能将值保持在viewstate中,则将其放置在网格中。

尝试在Grid View的RowDataBoundEvent上动态查找所需的字段验证器。

TextBox tb=e.Row.FindControl("txtBox") as TextBox;
tb.ValidationGroup=e.RowIndex; 
RequiredFieldvalidation rv=e.Row.FindControl("rv") as
RequiredFieldValidator; rv.ControlTovalidate=tb; rv.ErrorMessage;
rv.ErrorMessage="*";
rv.ValidationGroup=e.RowIndex;

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.requiredfieldvalidator.aspx

使用ControlToValidate属性将验证器绑定到在提交/发布有效之前所需的文本框。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM