Gridview не обновляется
HTML:-
<asp:GridView runat="server" ID="gv2" AutoGenerateColumns="false" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true" OnRowEditing="edit" OnRowUpdating="update" OnRowDeleting="delete" OnRowCancelingEdit="cancel"> <Columns> <asp:TemplateField HeaderText="ID"> <ItemTemplate> <asp:Label runat="server" ID="lblId" Text='<%#Eval("s_id") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:Label runat=server ID="lblId1" Text='<%#Eval("s_id") %>'></asp:Label> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Name"> <ItemTemplate> <asp:Label runat="server" ID="lblName" Text='<%#Eval("s_name") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox runat="server" ID="txtName" Text='<%#Eval("s_name") %>'></asp:TextBox> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Phone"> <ItemTemplate> <asp:Label runat="server" ID="lblPhone" Text='<%#Eval("s_phone") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox runat="server" ID="txtPhone" Text='<%#Eval("s_phone") %>'></asp:TextBox> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Degree"> <ItemTemplate> <asp:Label runat="server" ID="lblDegree" Text='<%#Eval("s_degree") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox runat="server" ID="txtDegree" Text='<%#Eval("s_degree") %>'></asp:TextBox> </EditItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
Код(.cs):-
public void update(object sender, GridViewUpdateEventArgs e) { con.Open(); Label lbl = gv2.Rows[e.RowIndex].FindControl("lblId1") as Label; TextBox txtName = gv2.Rows[e.RowIndex].FindControl("txtName") as TextBox; TextBox txtPhone = gv2.Rows[e.RowIndex].FindControl("txtPhone") as TextBox; TextBox txtDegree = gv2.Rows[e.RowIndex].FindControl("txtDegree") as TextBox; SqlCommand cmd2 = new SqlCommand(); cmd2.Connection = con; cmd2.CommandText = "UpdateInfo"; cmd2.CommandType = CommandType.StoredProcedure; cmd2.Parameters.Add("@s_name", SqlDbType.VarChar).Value = txtName.Text.ToString(); cmd2.Parameters.Add("@s_phone", SqlDbType.VarChar).Value = txtPhone.Text.ToString(); cmd2.Parameters.Add("@s_degree", SqlDbType.VarChar).Value = txtDegree.Text.ToString(); cmd2.Parameters.Add("@s_id", SqlDbType.Int).Value = Convert.ToInt32(lbl.Text); cmd2.ExecuteNonQuery(); lblTest.Text = txtName.Text;//was checking value but previous value printing here cmd2.Dispose(); gv2.EditIndex = -1; con.Close(); BindData(); }
Процедура:-
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO ALTER procedure [dbo].[UpdateInfo] ( @s_name varchar(300), @s_phone varchar(50), @s_degree varchar(300), @s_id int ) as begin update info set s_name=@s_name, s_phone=@s_phone, s_degree=@s_degree where s_id=@s_id end
Цитата:Ребята, проблема здесь в том, что мне нужно удалить старую строку и вставить новую строку в Gridview в режиме редактирования. Так что помогите мне с некоторым кодом, который вставлял бы/обновлял новые значения, заданные в режиме редактирования, а также очищал бы предыдущее сохраненное / привязанное значение.
Когда я обновляю, Gridview удерживает в нем значение привязки, таким образом, не позволяя операции обновления вызывать эффекты.
sriman.ch
это метания какие-либо ошибки ? проверьте, получаете ли Вы значения для обновления ...
Karthik Harve
Покажите функцию " BindData ();"...!!!!
07navneet
public void BindData()
{
против.Открыть();
Sqlcommand, который cmd1 = новый sqlcommand, который();
cmd1.Подключение = кон;
cmd1. CommandText = " GetInfo";
cmd1. CommandType = CommandType.Хранимая процедура;
//SqlDataReader rdr = cmd1.Метода executereader();
//ГВ2.Источник данных = РДР;
SqlDataAdapter da = новый SqlDataAdapter(cmd1);
DataSet ds = новый набор данных();
да.Заполнить(ДС);
gv2. DataSource = ds;
в ГВ2.Привязку();
cmd1.Распоряжаться();
против.Закрывать();
}
07navneet
никакой ошибки!