locked
Edit Record RRS feed

  • Question

  • User-1499457942 posted

    Hi

      I have below code . I want when user clicks on edit Data should be displayed . I have 2 dropdown . I want their existing values should be displayed also with dropdown

    It is not going in RowCommand also.

    <asp:GridView ID="gvwCategories" OnPreRender="gvwCategories_PreRender" runat="server"
                    CssClass="table table-bordered table-striped" AutoGenerateColumns="false" OnRowCommand="gvwCategories_RowCommand"
                    ClientIDMode="Static" BorderWidth="1px"  
                    BorderStyle="None" BorderColor="#DEBA84" HeaderStyle-CssClass="GridHeader" 
                     >
                    <HeaderStyle ForeColor="White" Font-Bold="True" BackColor="#428bca"></HeaderStyle>
                    <Columns>
                        <asp:BoundField DataField="EntryNo" HeaderText="EntryNo" InsertVisible="False" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" />
                        <asp:BoundField HeaderText="Code" DataField="Code" />
                        <asp:BoundField HeaderText="Description" DataField="Description" />
                        <asp:BoundField HeaderText="Months" DataField="Months" />
                        <asp:TemplateField HeaderText="Action">
                            <ItemTemplate>
                                <asp:linkbutton id="btnEdit" data-toggle="modal" href="#myEditModal" ToolTip="Update Record" 
    CommandName="EditRecord" CommandArgument='<%#Eval("No") %>' runat="server" CssClass="clslnkbutton"/> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog modal-sm"> <div class="modal-content"> <div class="modal-header bg-primary"> <button type="button" class="close" data-dismiss="modal">×</button> <h4 class="modal-title " id="myModalLabel">Add New </h4> </div> <div class="modal-body"> <div class="form-horizontal"> <div class="form-group"> <asp:Label ID="lblCode" runat="server" CssClass="col-sm-4 control-label" Text="Code"></asp:Label> <div class="col-sm-4"> <asp:TextBox ID="txtCode" CssClass="form-control" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="rfv1" CssClass="text-danger" runat="server" ErrorMessage="This field is Required !" ControlToValidate="txtCode"></asp:RequiredFieldValidator> </div> </div> <div class="form-group"> <asp:Label ID="lblDescription" runat="server" CssClass="col-sm-4 control-label" Text="Description"></asp:Label> <div class="col-sm-8"> <asp:TextBox ID="txtDescription" CssClass="form-control" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="rfv2" CssClass="text-danger" runat="server" ErrorMessage="This field is Required !" ControlToValidate="txtDescription"></asp:RequiredFieldValidator> </div> </div> <div class="form-group"> <label for="Select" class="col-sm-4 control-label">NMS Months</label> <div class="col-sm-4"> <asp:DropDownList ID="ddlMonths" runat="server" CssClass="btn btn-default btn-sm"> <asp:ListItem Text="1" Value ="1"/> <asp:ListItem Text="2" Value ="2"/> <asp:ListItem Text="3" Value ="3"/> <asp:ListItem Text="4" Value ="4"/> <asp:ListItem Text="5" Value ="5"/> <asp:ListItem Text="6" Value ="6"/> <asp:ListItem Text="7" Value ="7"/> <asp:ListItem Text="8" Value ="8"/> <asp:ListItem Text="9" Value ="9"/> <asp:ListItem Text="10" Value ="10"/> <asp:ListItem Text="11" Value ="11"/> <asp:ListItem Text="12" Value ="12"/> </asp:DropDownList> </div> </div> <div class="form-group"> <div class="col-sm-4"></div> <div class="col-sm-4"> <asp:Button ID="btnInsert" CssClass="btn btn-primary" runat="server" class="btn btn-primary" Text=" Save " OnClick="InsertData" ></asp:Button> </div> </div> </div> </div> </div> </div> </div>

    <div>protected void gvwCategories_RowCommand(object sender, GridViewCommandEventArgs e)</div> <div>        {</div> <div>            if (e.CommandName == "EditRecord")</div> <div>            {</div> <div>                LinkButton btndetails = (LinkButton)e.CommandSource;</div> <div>                GridViewRow gvrow = (GridViewRow)btndetails.NamingContainer;</div> <div> </div> <div>                using (GridViewRow row = (GridViewRow)((LinkButton)sender).Parent.Parent)</div> <div>                {</div> <div>                    txtDescription.Text = row.Cells[2].Text;</div> <div>                }</div> <div></div> <div>            }</div> <div>        }</div>

    Thanks

    Tuesday, August 14, 2018 12:11 PM

Answers

  • User-893317190 posted

    Hi  JagjitSingh,

     The problem is caused by validation controls  in your modal.

     Because validation controls will validate your data every time the page posts back , if your data is invalid, it will prevent the postback.

     If you want to post back with the data invalid , you need to set   validationgroup property of your validation control and the insert button to the same value  so that only the button’s post back will be validated.

     Furthermore, I advise you to use button instead of linkbutton in your gridview because linkbutton will not trigger gridview’s  command event. To  make your modal show after  rowcommand event , you could register script at code behind.

     Below is my code.

    <form id="form1" runat="server">
           <asp:GridView ID="gvwCategories"  runat="server"
                    CssClass="table table-bordered table-striped" AutoGenerateColumns="false" OnRowCommand="gvwCategories_RowCommand"
                    ClientIDMode="Static" BorderWidth="1px"  
                    BorderStyle="None" BorderColor="#DEBA84" HeaderStyle-CssClass="GridHeader" 
                     >
                    <HeaderStyle ForeColor="White" Font-Bold="True" BackColor="#428bca"></HeaderStyle>
                    <Columns>
                        <asp:BoundField DataField="EntryNo" HeaderText="EntryNo" InsertVisible="False" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" />
                        <asp:BoundField HeaderText="Code" DataField="Code" />
                        <asp:BoundField HeaderText="Description" DataField="Description" />
                        <asp:BoundField HeaderText="Months" DataField="Months" />
                        <asp:TemplateField HeaderText="Action">
                            <ItemTemplate>
                                  <asp:Button id="btnEdit"  ToolTip="Update Record"  
                                    CommandName="EditRecord"  runat="server" CssClass="btn btn-default" Text="edit" />
                          
                            </ItemTemplate>
                        </asp:TemplateField>
              
                    </Columns>
                    </asp:GridView>
    
                   
           
          
            <div class="modal fade" id="myEditModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
            <div class="modal-dialog modal-sm">
                <div class="modal-content">
                    <div class="modal-header bg-primary">
                        <button type="button" class="close" data-dismiss="modal">×</button>
                        <h4 class="modal-title " id="myModalLabel">Add New </h4>
                    </div>
                    <div class="modal-body">
                        <div class="form-horizontal">
                            <div class="form-group">
                                <asp:Label ID="lblCode" runat="server" CssClass="col-sm-4 control-label" Text="Code"></asp:Label>
                                <div class="col-sm-6">
                                    <asp:TextBox ID="txtCode" CssClass="form-control" runat="server"></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="rfv1" CssClass="text-danger" runat="server" ErrorMessage="This field is Required !" ControlToValidate="txtCode"
                                        ValidationGroup="edit">
                                        
    
                                    </asp:RequiredFieldValidator>
                                </div>
                            </div>
                            <div class="form-group">
                                <asp:Label ID="lblDescription" runat="server" CssClass="col-sm-4 control-label" Text="Description"></asp:Label>
                                <div class="col-sm-8">
                                    <asp:TextBox ID="txtDescription"  CssClass="form-control" runat="server"></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="rfv2" CssClass="text-danger" runat="server" ErrorMessage="This field is Required !" ControlToValidate="txtDescription"
                                        ValidationGroup="edit"></asp:RequiredFieldValidator>
                                </div>
                            </div>
                            <div class="form-group">
                                <label for="Select" class="col-sm-4 control-label">NMS Months</label>
                                <div class="col-sm-4">
                                    <asp:DropDownList ID="ddlMonths" runat="server"    CssClass="btn btn-default btn-sm">
                                    <asp:ListItem Text="1" Value ="1"/>
                                    <asp:ListItem Text="2" Value ="2"/>
                                    <asp:ListItem Text="3" Value ="3"/>
                                    <asp:ListItem Text="4" Value ="4"/>
                                    <asp:ListItem Text="5" Value ="5"/>
                                    <asp:ListItem Text="6" Value ="6"/>
                                    <asp:ListItem Text="7" Value ="7"/>
                                    <asp:ListItem Text="8" Value ="8"/>
                                    <asp:ListItem Text="9" Value ="9"/>
                                    <asp:ListItem Text="10" Value ="10"/>
                                    <asp:ListItem Text="11" Value ="11"/>
                                    <asp:ListItem Text="12" Value ="12"/>
                                    </asp:DropDownList>
                                </div>
                            </div>
                            
                            <div class="form-group">
                                <div class="col-sm-4"></div>
                                <div class="col-sm-4">
                                    <asp:Button ID="btnInsert" CssClass="btn btn-primary"  runat="server" class="btn btn-primary" Text=" Save "  ValidationGroup="eidt"></asp:Button>
                                </div>
                            </div>
                        </div>
                    </div>        
                </div>
            </div>
    </div>
    

     Code behind.

       protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    //simulate data from the database
                    List<Entry> list = new List<Entry>();
                    list.Add(new Entry { EntryNo = 1, Code = "code1", Description = "description1", Months = 1 });
                    list.Add(new Entry { EntryNo = 2, Code = "code2", Description = "description2", Months = 2 });
                    list.Add(new Entry { EntryNo = 3, Code = "code3", Description = "description3", Months = 3 });
                    list.Add(new Entry { EntryNo = 4, Code = "code4", Description = "description4", Months = 4 });
                    list.Add(new Entry { EntryNo = 5, Code = "code5", Description = "description1", Months = 5 });
    
                    gvwCategories.DataSource = list;
                    gvwCategories.DataBind();
                }
            }
    
            protected void gvwCategories_RowCommand(object sender, GridViewCommandEventArgs e) {
    
                if (e.CommandName == "EditRecord") { Button btndetails = (Button)e.CommandSource;
                    GridViewRow gvrow = (GridViewRow)btndetails.NamingContainer; using (GridViewRow row = (GridViewRow)(btndetails).Parent.Parent) {
    
                        txtDescription.Text = row.Cells[2].Text;
                        ddlMonths.SelectedValue = row.Cells[3].Text;
                        txtCode.Text = row.Cells[1].Text;
    //register script to make the modal show ScriptManager.RegisterStartupScript(this, this.GetType(), "popup", "$('#myEditModal').modal('show')", true); } } } } public class Entry { public int EntryNo { get; set; } public string Code { get; set; } public string Description { get; set; } public int Months { get; set; } }

    Below is the result when I click the fourth button of the gridview.

    Best regards ,

    Ackerly Xu

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Wednesday, August 15, 2018 7:58 AM