У меня есть gridview, где пользователи могут редактировать и обновлять данные в gridview, но моя проблема в том, что когда я помещаю некоторый текст в поле Действие, ничего не обновляется. Я попытался запустить режим отладки, поэтому я могу посмотреть, что происходит, но я не вижу значений, которые я ввел в текстовое поле, он показывает пробел в моей переменной. Вот мой ASPX код:Проблема с обновлением строк в gridview
<asp:GridView ID="GridView1" runat="server" Width = "855px" AutoGenerateColumns = "False" Font-Names = "Arial"
OnPageIndexChanging = "OnPaging" onrowediting="EditGridView1"
onrowupdating="UpdateGridView1" onrowcancelingedit="CancelEdit" CellPadding="3"
BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" >
<Columns>
<asp:TemplateField ItemStyle-Width = "30px" HeaderText = "ID">
<ItemTemplate>
<asp:Label ID="lblQST_SK" runat="server" Text='<%# Eval("QUEST_SK")%>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="10px" />
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width = "150px" HeaderText = "Action">
<ItemTemplate>
<asp:Label ID="lblAction" runat="server" Text='<%# Eval("ACTION")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtAction" runat="server" Text='<%# Eval("ACTION")%>' TextMode="MultiLine" Height="80px"></asp:TextBox>
</EditItemTemplate>
<ItemStyle Width="150px" />
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="White" ForeColor="#000066" />
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White"
HorizontalAlign="Left" />
<PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
<RowStyle ForeColor="#000066" />
</asp:GridView>
вот мой код позади:
protected void UpdateGridView1(object sender, GridViewUpdateEventArgs e)
{
string QUEST_SK = ((Label)GridView1.Rows[e.RowIndex].FindControl("lblQST_SK")).Text;
string ACTION = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtAction")).Text;
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "update mytable set [email protected]" +
"where [email protected]_SK;" +
"SELECT QUEST_SK, ACTION FROM mytable";
cmd.Parameters.Add("@QUEST_SK", SqlDbType.VarChar).Value = QUEST_SK;
cmd.Parameters.Add("@ACTION", SqlDbType.VarChar).Value = ACTION;
GridView1.EditIndex = -1;
GridView1.DataSource = GetData(cmd);
GridView1.DataBind();
}
Вы пробовали использовать вместо # Прослушивать из #Eval для элементов управления TextBox? –
Нет, я этого не делал, но странно, что все работало нормально для меня до того, как я внес некоторые изменения в справочную таблицу, и это изменение было, я изменил QUEST_SK из bigint в столбец идентичности, и это все – moe
Identity столбец автоматически увеличивается, поэтому нет необходимости вставлять в него значение. Попробуйте uing #Bind, так как он работает с двумя способами для элементов управления, где пользователь может предоставлять входные данные, например, читать из источника данных, а также хранить пользовательский ввод. –