Member 8583441 Ответов: 1

Gridview не обновляется при нажатии кнопки Обновить


Моя проблема заключается в том, что когда я нажимаю кнопку Обновить, она обновляет данные в базе данных с помощью связанного с ней sqldatasource. Но поля редактирования, такие как текстовое поле, кнопки не освежают. Когда я нажимаю только кнопку отмены, она показывает данные, а кнопки текстового поля и обновления закрываются и постбэкингуются для редактирования и удаления кнопок.

Мои сомнения добавляет
MultipleActiveResultSets=True
в файле web.config эти изменения произойдут или нет, потому что на предыдущей странице у меня было аналогичное событие gridview, но изменения произошли так, как ожидалось.

Что я уже пробовал:

Строка подключения: я удалил общий оператор типа database, initial catalog username and password здесь хранится только один MultipleActiveResultSets=True
<connectionStrings>
    <add name="DefaultConnection" connectionString="MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
</connectionStrings>


Я сохранил этот gridview внутри updatepanel, имея updatemode="conditional" и ChildrenAsTriggers="true"

GridView в:
<asp:GridView ID="gvUsersList" runat="server" AutoGenerateColumns="False" EmptyDataText="No Records Found" AllowPaging="True" GridLines="Vertical" AlternatingRowStyle-CssClass="alt" SkinID="gridviewSkin" Width="100%" CssClass="label" DataSourceID="userDetailsDataSource" DataKeyNames="UserID"                                            OnRowEditing="gvUsersList_RowEditing" OnRowCancelingEdit="gvUsersList_RowCancelingEdit"                                            OnRowUpdating="gvUsersList_RowUpdating" OnSelectedIndexChanged="gvUsersList_SelectedIndexChanged"                                            OnRowDeleting="gvUsersList_RowDeleting" 
OnRowDataBound="gvUsersList_RowDataBound"                                             ShowHeaderWhenEmpty="true" 
OnRowCommand="gvUsersList_RowCommand" 
EnableViewState="false">
         <asp:TemplateField ItemStyle-Width="250px">
             <ItemTemplate>
                 <asp:Button ID="btnEdit" runat="server" Text="Edit" CssClass="btn btn-link text-center" ToolTip="Edit User Details" CommandName="Edit" UseSubmitBehavior="false" OnCommand="btnEdit_Command" OnClick="btnEdit_Click" CausesValidation="false" />

                 <asp:Button ID="btnDelete" runat="server" Text="Delete" CssClass="btn btn-link text-center" ToolTip="Delete User Details" CommandName="Delete" UseSubmitBehavior="false" CausesValidation="false" OnClick="btnDelete_Click" />
            </ItemTemplate>
            <HeaderStyle Width="50px" />
            <EditItemTemplate>
                <asp:Button ID="btnUpdate" runat="server" Text="Update" CommandName="Update" CssClass="btn btn-link" UseSubmitBehavior="false" />
                <asp:Button ID="btnCancel" runat="server" Text="Cancel" CommandName="Cancel" UseSubmitBehavior="false" CssClass="btn btn-link" />
            </EditItemTemplate>
        </asp:TemplateField>
</asp:GridView>


с фоновым кодом:
if (!IsPostBack)
{
    gvUsersList.DataSourceID = "userDetailsDataSource";
    gvUsersList.DataBind();
}

Member 13658881

вы используете какую-либо панель обновления ? и используйте функцию Bind() на
if(!ispostback)
{
связывать();
}
четко сказать ..

Member 8583441

Я использовал его, но никаких изменений нет. Пожалуйста помогите мне сэр

Member 13658881

Удалите панель обновления, иначе используйте триггер..подождите я приведу вам пример кодирования

1 Ответов

Рейтинг:
0

Member 13658881

if (!IsPostBack)
{
   Bind()  //use bind function ....
}
void Bind()
{
//do grid view data fill work here 
}
this my sample coding you need to change...

if (e.CommandName == "Update")
          {

              butadd.Visible = false;// use visible false true here
              butaddupdate.Visible = true;//

              Button btnUpdate = (Button)e.CommandSource;
              GridViewRow row = (GridViewRow)btnUpdate.NamingContainer;
           //


          }

protected void butaddupdate_Click(object sender, EventArgs e)
       {
           butadd.Visible = true;
           butaddupdate.Visible = false;

           Pruchase.Columns[1].Visible = true;
           Pruchase.Columns[6].Visible = true;
           DataTable dt = new DataTable();

           if (ViewState["produ"] != null)
           {

               dt = (DataTable)ViewState["produ"];
               int rowindex = Convert.ToInt32(Session["rowname"].ToString());

               if (dt.Rows.Count >= 1 && rowindex != -1)
               {
                   dt.Rows[rowindex]["Prod_id"] = Litemid.Text;
                   dt.Rows[rowindex]["prd_name"] = txtitems.Text;
                   dt.Rows[rowindex]["Prod_qty"] = txtqty.Text;
                   dt.Rows[rowindex]["Prod_rate"] = txtrate.Text;
                   //dt.Rows[rowindex]["srid"] = Lsrid.Text;

                   Pruchase.DataSource = dt;
                   Pruchase.DataBind();
               }


           }

           //ViewState["produ"] = dt;


           Litemid.Text = "";
           txtitems.Text = "";
           txtqty.Text = "";
           txtrate.Text = "";
           txttotal.Text = "";

           //decimal total = 0;

           foreach (GridViewRow row in Pruchase.Rows)
           {
               decimal Rate = Convert.ToDecimal(row.Cells[3].Text);
               decimal qty = Convert.ToDecimal(row.Cells[4].Text);

               Decimal Total = Rate * qty;
               row.Cells[5].Text = Convert.ToString(Math.Round(Total, 2));

               Amount = Amount + Total;

               Pruchase.FooterRow.Cells[5].Text = Convert.ToString(Math.Round(Amount, 2));
               Lamt.Text = Pruchase.FooterRow.Cells[5].Text;

           }
           Pruchase.Columns[1].Visible = false;
           Pruchase.Columns[6].Visible = false;

       }


Member 8583441

для меня нет необходимости привязывать данные из базы данных это автоматически данные из полей SqlDataSource

Member 13658881

ну ладно, попробуй вот это..