簡體   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