简体   繁体   中英

Update panel not working correctly

I wrapped my Gridview inside Update panel and set trigger to search button but it doesn't work correctly, When i put text into textbox and click search then gridview display relevant results, that's ok but it should load column's text into Textbox upon clicking Gridview's SELECT button which was working before putting Update panel but not now. Neither it loads text into textbox and nor does it load again after clicking Search button.

CODE:

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="btnSearch" EventName="Click" />
                </Triggers>
                <ContentTemplate>
                    <asp:GridView ID="gridViewComplaints" AutoGenerateSelectButton="true" runat="server" CssClass="mGrid" OnSelectedIndexChanged="gridViewComplaints_SelectedIndexChanged">
              <EmptyDataRowStyle BorderStyle="None" ForeColor="Red" BorderWidth="0px" />
               <EmptyDataTemplate>
                  No Data Found for this Input. Try Again.
               </EmptyDataTemplate> 
             <SelectedRowStyle CssClass="selected-row" BackColor="YellowGreen" ForeColor="white" />
             </asp:GridView>
                </ContentTemplate>
            </asp:UpdatePanel>

 protected void gridViewComplaints_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow row = gridViewComplaints.SelectedRow;
        txtComplaintSubject.Text = row.Cells[2].Text;
        HiddenFieldComplaintID.Value = row.Cells[1].Text;
        int cid = Convert.ToInt32(HiddenFieldComplaintID.Value);
        Response.Write(cid.ToString());
        gridViewComplaints.Visible = false;

    }

This is how it works for me. If you can try this code :

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
    <ContentTemplate>
        <asp:GridView ID="GridView1" class="gridview" OnRowCommand="EditGridData" runat="server"
            AutoGenerateColumns="False" CellPadding="4" GridLines="None" AllowPaging="True"
            OnPageIndexChanging="GrdState_PageIndexChanging" PageSize="20" EmptyDataText="Record is Not Available"
            Width="93%">
            <Columns>
                <asp:TemplateField HeaderText="Edit">
                    <ItemTemplate>
                        <asp:LinkButton ID="BtnEdit" runat="server" CausesValidation="false" class="black skin_colour round_all"
                            CommandArgument='<%# Eval("Country_ID")%>' CommandName="Edit1" ForeColor="#6699FF"
                            Font-Underline="True"> <span>Edit</span></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Delete">
                    <ItemTemplate>
                        <asp:LinkButton ID="BtnDelete" OnClientClick="return confirm('Are you sure want to delete?');"
                            CausesValidation="false" class="black skin_colour round_all " CommandArgument='<%# Eval("Country_ID")%>'
                            CommandName="Delete1" runat="server" ForeColor="#6699FF" Font-Underline="True"><span>Delete</span></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="View">
                    <ItemTemplate>
                        <asp:LinkButton ID="LBtnView" CausesValidation="false" class="black skin_colour round_all "
                            CommandArgument='<%# Eval("Country_ID")%>' CommandName="View1" runat="server"
                            ForeColor="#6699FF" Font-Underline="True"><span>View</span></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Country_Name" HeaderText="Country" />
                <asp:BoundField DataField="Description" Visible="false" HeaderText="Description" />
                <asp:TemplateField HeaderText="Description">
                    <ItemTemplate>
                        <div class="DisplayDiv">
                            <asp:Label ID="Label1" runat="server" CssClass="DisplayDesc" Text='<%# Eval("Description") %>'></asp:Label>
                        </div>
                    </ItemTemplate>
                </asp:TemplateField>

                <asp:BoundField DataField="CreationDate" HeaderText="Creation Date" DataFormatString="{0:dd/MM/yy}" />
            </Columns>
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>

The Code behind (If you can see I'm using command name for the link buttons in the grid view):

public void EditGridData(object sender, GridViewCommandEventArgs e)
    {
        int i = Convert.ToInt32(e.CommandArgument);
        Session["Country_ID"] = i;

        if (e.CommandName == "Edit1")
        {
            SortedList sl = new SortedList();
            sl.Add("@mode", "GetRows1");
            sl.Add("@Country_ID", i);
            SqlDataReader dr = emp.GetDataReaderSP("CountryMaster1", sl);
            while (dr.Read())
            {
                txtCountry.Text = dr["Country_Name"].ToString();
                txtDesc.Text = dr["Description"].ToString();
                ViewState["Country_Name"] = dr["Country_Name"].ToString();
                BtnSubmit.Visible = true;
                BtnSubmit.Text = "Update";
            }
        }

        if (e.CommandName == "View1")
        {
            SortedList sl = new SortedList();
            sl.Add("@mode", "GetRows1");
            sl.Add("@Country_ID", i);
            SqlDataReader dr = emp.GetDataReaderSP("CountryMaster1", sl);
            while (dr.Read())
            {
                txtCountry.Text = dr["Country_Name"].ToString();
                txtDesc.Text = dr["Description"].ToString();
                ViewState["Country_Name"] = dr["Country_Name"].ToString();

                BtnReset.Visible = true;
                BtnSubmit.Visible = false;
            }
        }


        if (e.CommandName == "Delete1")
        {
            SortedList sl = new SortedList();
            sl.Add("@mode", "DeleteData");
            sl.Add("@Country_ID", i);

            emp.ExecuteNonQuerySP("CountryMaster1", sl);
            Label1.Visible = true;
            Label1.Text = "Record Deleted Successfully…";
            BindGrid();
        }

    }

Hope this helps.

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