2013-12-16 3 views
0

У меня есть 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(); 
    } 
+0

Вы пробовали использовать вместо # Прослушивать из #Eval для элементов управления TextBox? –

+0

Нет, я этого не делал, но странно, что все работало нормально для меня до того, как я внес некоторые изменения в справочную таблицу, и это изменение было, я изменил QUEST_SK из bigint в столбец идентичности, и это все – moe

+0

Identity столбец автоматически увеличивается, поэтому нет необходимости вставлять в него значение. Попробуйте uing #Bind, так как он работает с двумя способами для элементов управления, где пользователь может предоставлять входные данные, например, читать из источника данных, а также хранить пользовательский ввод. –

ответ

0

Попробуйте написать функцию ниже в Page Load Событие:

Page_Load() 
{ 

if(IsPostBack) 
{ 
    return`; 
} 

} 
Смежные вопросы