简体   繁体   中英

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

I have a regular gridview with insert,edit,update, delete operations as in below image:

网格视图

Before inserting data to the DB, I am doing the validation on the textboxes if they are filled or empty like this:

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

But after clicking the OK button of the alert message, the values that i added in the required textboxes are getting lost. How to keep the values of the textboxes in 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中,则将其放置在网格中。

Try to find required field validator dynamically on RowDataBoundEvent of Grid View.

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

Bind the validator to the textbox you need to be required before a submit/post is valid using the ControlToValidate property.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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