在GridView中更新一行ASP NET不起作用
我是新的ASP.NET开发人员并尝试更新GridView中的一行。我尝试了许多解决方案,但它不起作用。当我更新一行时,不会显示错误消息,但不会考虑更新。在GridView中更新一行ASP NET不起作用
<asp:GridView ID="grd_quest" Visible = "False" runat="server" CellPadding="4"
DataSourceID="ERP_questionn" ForeColor="#333333" GridLines="None"
AutoGenerateColumns="False" DataKeyNames="QUE_id">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:CommandField ShowEditButton="true" />
<asp:BoundField DataField="QUE_id" HeaderText="ID" ReadOnly="True"
SortExpression="QUE_id" ItemStyle-Width="10%" />
<asp:BoundField DataField="QUE_libelle" HeaderText="Libelle"
SortExpression="QUE_libelle" />
</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
<asp:SqlDataSource ID="ERP_questionn" runat="server"
ConnectionString="<%$ ConnectionStrings:ERPConnectionString %>"
SelectCommand=""
UpdateCommand=
"UPDATE [TR_QUESTION] SET [QUE_libelle] = @QUE_libelle WHERE [QUE_id] = @QUE_id">
<UpdateParameters>
<asp:Parameter Name="QUE_libelle" Type="String" />
<asp:Parameter Name="QUE_id" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
,因为它在其他功能变化的SELECT命令,这里没有书面清单,所以我写在C#中SelectCommand
。 我希望这是清楚你
[编辑]
我曾尝试与此的其他解决方案在C#:
protected void grd_quest_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
SqlConnection sqlConnection1 = new SqlConnection(connectionString);
int id = Convert.ToInt32(grd_quest.DataKeys[e.RowIndex].Value.ToString());
GridViewRow row = (GridViewRow)grd_quest.Rows[e.RowIndex];
//TextBox txtname=(TextBox)gr.cell[].control[];
TextBox textadd = (TextBox)row.Cells[2].Controls[0];
//TextBox textadd = (TextBox)row.FindControl("txtadd");
//TextBox textc = (TextBox)row.FindControl("txtc");
grd_quest.EditIndex = -1;
sqlConnection1.Open();
//SqlCommand cmd = new SqlCommand("SELECT * FROM detail", conn);
SqlCommand cmd = new SqlCommand("UPDATE TR_QUESTION SET QUE_libelle = @p_libelle where QUE_id = @p_id ", sqlConnection1);
cmd.Parameters.AddWithValue("@p_id", id);
cmd.Parameters.AddWithValue("@p_libelle", textadd.Text);
cmd.ExecuteNonQuery();
sqlConnection1.Close();
grd_quest.DataBind();
}
但它不工作过,我有谁要说的错误信息即:
数据源'ERP_questionn'不支持更新,除非指定了UpdateCommand。我有尝试:更新命令=“”,但它不工作太
[编辑新的尝试]
protected void grd_quest_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string id = grd_quest.DataKeys[e.RowIndex].Value.ToString();
string libelle = ((TextBox)grd_quest.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
ERP_questionn.UpdateParameters["QUE_id"].DefaultValue = id;
ERP_questionn.UpdateParameters["QUE_libelle"].DefaultValue = libelle;
ERP_questionn.Update();
//ERP_questionn.SelectCommand = DropDownList1.SelectedValue;
}
当我更新行,而不是错误消息,但更新不考虑。
[编辑]
也许这可以帮助,在我的GridView我这样做是为了显示我的数据:
protected void lst_facteur_SelectedIndexChanged(object sender, EventArgs e)
{
if (lst_pos.SelectedValue == "1")
{
ERP_questionn.SelectCommand = "select * FROM TR_QUESTION WHERE FAC_id =" + lst_facteur.SelectedValue + " AND QUE_ordreUsine IS NOT NULL";
}
else if (lst_pos.SelectedValue == "2")
{
ERP_questionn.SelectCommand = "select * FROM TR_QUESTION WHERE FAC_id =" + lst_facteur.SelectedValue + " AND QUE_ordreBureau IS NOT NULL";
}
grd_quest.DataBind();
grd_quest.Visible = true;
txt_question.Visible = true;
btn_add_question.Visible = true;
我一直在更新的问题...
你必须设置SelectCommand = "SELECT * FROM [TR_QUESTION]"
在HTML代码也:
<asp:GridView ID="grd_quest" runat="server" AutoGenerateColumns="False" DataKeyNames="QUE_id" DataSourceID="ERP_questionn">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="QUE_id" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="QUE_id" />
<asp:BoundField DataField="QUE_libelle" HeaderText="Libelle" SortExpression="QUE_libelle" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="ERP_questionn" runat="server"
ConnectionString="<%$ ConnectionStrings:ERPConnectionString %>"
SelectCommand = "SELECT * FROM [TR_QUESTION]"
UpdateCommand =
"UPDATE [TR_QUESTION] SET [QUE_libelle] = @QUE_libelle WHERE [QUE_id] = @QUE_id">
</asp:SqlDataSource>
感谢很多关于你的答案!我已经这样做了:OnRowUpdating =“grd_quest_RowUpdating。但是当我尝试你的解决方案时,我有这个错误:”附近的语法不正确?“也许我需要ac#代码?但是什么? – baker
你访问过链接UpdateCommand吗? – AsifAli72090
对不起!我没有看到链接,我在例子上做了同样的事情,但我有同样的错误:“附近语法不正确?”。“只是我没有这样做ProviderName =”系统.Data.Odbc“,因为此元素创建一个错误:错误[IM002] [Microsoft] [Gestionnaire de pilotes ODBC]未找到数据源和驱动程序名称未指定 – baker
"UPDATE [TR_QUESTION] SET [QUE_libelle] =? WHERE [QUE_id] =?"
除此之外,您还没有在gridview上设置更新命令事件。
引发OnRowUpdated =“CustomersGridView_RowUpdated”
我已经添加下面的答案的链接使用更新命令 – AsifAli72090