У меня есть Gridview с этими параметрами:asp.net GridView не обновляется должным образом
<asp:GridView runat="server" ID="ItemGrid" CssClass="Grid"
AutoGenerateColumns="false"
AutoGenerateDeleteButton="true" OnRowDeleting="RowDeleting"
AutoGenerateEditButton="true" onRowEditing="RowEdit"
OnRowCancelingEdit="CancelRowEdit" onRowUpdating="RowUpdating"
DataKeyNames="Item_ID">
<Columns>
<asp:BoundField HeaderText="Item" DataField="Item"/>
<asp:BoundField HeaderText="Family" DataField="Family"/>
<asp:BoundField HeaderText="Structure" DataField="Structure"/>
<asp:BoundField HeaderText="Updated" ReadOnly="true" DataFormatString="{0:d}" DataField="Updated"/>
</Columns>
</asp:GridView>
Об обновлении его называет:
protected void RowUpdating(object sender, GridViewUpdateEventArgs e){
int Item_ID = (int)this.ItemGrid.DataKeys[e.RowIndex][0];
//Problem is something right here:
string Item = ((TextBox)ItemGrid.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
string Family = ((TextBox)ItemGrid.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
string Structure = ((TextBox)ItemGrid.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
ItemTableAdapter taItem = new ItemTableAdapter();
taItem.UpdateItem(Item, Family, Structure, DateTime.Now, Item_ID);
//just a <asp:Label> for seeing some output.
Alert.Text= string.Format("Item:{0}Family:{1}Structure:{2}",Item,Family,Structure);
this.ItemGrid.EditIndex = -1;
dataBind();
}
Он генерирует Update/Редактировать/Удалить кнопки, мой Функция удаления работает точно так, как я хочу, и кнопка «Редактировать» генерирует редактируемые текстовые поля, как следует.
Моя проблема в части обновления, строки Item, Family, Structure получают старые значения, а не новые значения, которые я помещаю в сгенерированные текстовые поля.
Если я жестко кодирую значения, они обновляются в базе данных, а DateTime.Now
всегда правильно обновляется в базе данных, поэтому запрос обновления работает.
Я смотрел этот/читающий форумы, проверяя вещи на пару дней. Я уверен, что я просто пропустил что-то простое, что я упустил.
Спасибо за любую помощь.
Редактировать: Ответ получен, но для тех, кому это было интересно, это мои данныеBind();
protected void dataBind()
{
ItemTableAdapter taItem = new ItemTableAdapter();
this.ItemGrid.DataSource = taItem.GetActive();
this.ItemGrid.DataBind();
}
Пожалуйста, покажите, где/как вы связывание данных, я подозреваю, вы пересобираете данные перед вызовом rowupdating, так что это просто повторное использование старых данных. –
Какова ваша функция 'dataBind();'? –
Что вы сделали, чтобы исправить эту проблему, имеющую ту же проблему – ONYX