如何更新一个GridView使用绑定列时 [英] How to Update a GridView when boundfield is used

查看:111
本文介绍了如何更新一个GridView使用绑定列时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 GridView控件,它绑定到一个数据库中。我发现在数据库更新 GridView控件和相应的表的困难。

我的ASP code为 GridView控件绑定到的SqlDataSource后:

 < ASP:GridView控件ID =GridView2=服务器OnRowEditing =GridView2_RowEditing
    OnRowUpdating =GridView2_RowUpdating的cellpadding =4前景色=#333333OnRowCancelingEdit =GridView2_RowCancelingEdit
    OnRowDataBound =GridView2_RowDataBound的AutoGenerateColumns =FALSE
    的DataSourceID =SqlDataSource1AutoGenerateEditButton属性=真的DataKeyNames =位置>
    <柱体和GT;
        < ASP:BoundField的数据字段=位置的HeaderText =位置
            SORTEX pression =位置只读=真/>
        < ASP:BoundField的数据字段=Lamp_pro4​​的HeaderText =Lamp_pro4​​
            SORTEX pression =Lamp_pro4​​/>
        < ASP:BoundField的数据字段=Lamp_pro5的HeaderText =Lamp_pro5
            SORTEX pression =Lamp_pro5/>
        < ASP:BoundField的数据字段=AC_Profile5的HeaderText =AC_Profile5
            SORTEX pression =AC_Profile5/>
    < /专栏>< / ASP:GridView的>
< ASP:SqlDataSource的ID =SqlDataSource1=服务器
    的ConnectionString =下;%$的ConnectionStrings:TouchPadConnectionString%>中
    的SelectCommand =SELECT * FROM [数量]>
< / ASP:SqlDataSource的>

我datakey是位置和它的只读。

本的.cs code用于更新为:

 保护无效GridView2_RowUpdating(对象发件人,GridViewUpdateEventArgs E)
    {
        SqlConnection的CON =新的SqlConnection(数据源= ARCHANA-PC \\\\ ARCHANA;初始目录=触摸板;集成安全性=真);
        字符串LOCNAME = GridView2.DataKeys [e.RowIndex] .Values​​ [位置]的ToString()。
        文本框TXT1 =(文本框)GridView2.Rows [e.RowIndex] .FindControl(Lamp_pro4​​);
        文本框TXT2 =(文本框)GridView2.Rows [e.RowIndex] .FindControl(Lamp_pro5);
        文本框txt3 =(文本框)GridView2.Rows [e.RowIndex] .FindControl(AC_Profile5);
        字符串updStmt =更新量设置Lamp_pro4​​ = @ Lamp_pro4​​,Lamp_pro5 = @ Lamp_pro5,AC_Profile5 = @ AC_Profile5其中,位置= @ LOCNAME;        con.Open();
        的SqlCommand updCmd =新的SqlCommand(updStmt,CON);        updCmd.Parameters.AddWithValue(@ LOCNAME,LOCNAME);
        updCmd.Parameters.AddWithValue(@ Lamp_pro4​​,txt1.Text);
        updCmd.Parameters.AddWithValue(@ Lamp_pro5,txt2.Text);
        updCmd.Parameters.AddWithValue(@ AC_Profile5,txt3.Text);
        updCmd.ExecuteNonQuery();
        GridView2.DataBind();    }


解决方案

1),必须先调用 GridView2.DataBind()在治疗结束

 保护无效GridView2_RowUpdating(对象发件人,GridViewUpdateEventArgs E)
{
    // GridViewRow行=(GridViewRow)GridView2.Rows [e.RowIndex]    字符串LOCNAME = GridView2.DataKeys [e.RowIndex] .Values​​ [位置]的ToString()。
    文本框TXT1 =(文本框)GridView2.Rows [e.RowIndex] .FindControl(Lamp_pro4​​);
    文本框TXT2 =(文本框)GridView2.Rows [e.RowIndex] .FindControl(Lamp_pro5);
    文本框txt3 =(文本框)GridView2.Rows [e.RowIndex] .FindControl(AC_Profile5);
    con.Open();
    CMD的SqlCommand =新的SqlCommand(更新量设置Lamp_pro4​​ ='+ txt1.Text +',Lamp_pro5 ='+ txt2.Text +',AC_Profile5 ='+ txt3.Text +阿凡位置=+ LOCNAME,CON);
    cmd.ExecuteNonQuery();
    con.Close();    GridView2.EditIndex = -1;
    // BindQuantity();
    GridView2.DataBind();
}

2)定义更新命令的SqlDataSource

 < ASP:SqlDataSource的ID =SqlDataSource1=服务器
    的ConnectionString =下;%$的ConnectionStrings:TouchPadConnectionString%>中
    的SelectCommand =SELECT * FROM [数量]
    更新命令=更新量设置Lamp_pro4​​ = @ Lamp_pro4​​,Lamp_pro5 = @ Lamp_pro5,AC_Profile5 = @ AC_Profile5其中,位置= @位置>
< / ASP:SqlDataSource的>

链接:<一个href=\"http://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.sqldatasource.updatecommand.aspx\" rel=\"nofollow\">http://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.sqldatasource.updatecommand.aspx

I have a GridView and it is bound to a database. I am finding difficulties in updating the GridView and corresponding table in the database.

My asp code for GridView after binding to SQLdatasource is :

<asp:GridView ID="GridView2" runat="server" OnRowEditing="GridView2_RowEditing"
    OnRowUpdating="GridView2_RowUpdating" CellPadding="4" ForeColor="#333333" OnRowCancelingEdit="GridView2_RowCancelingEdit"
    OnRowDataBound="GridView2_RowDataBound" AutoGenerateColumns="False" 
    DataSourceID="SqlDataSource1" AutoGenerateEditButton="True" DataKeyNames="Locations">
    <Columns>
        <asp:BoundField DataField="Locations" HeaderText="Locations" 
            SortExpression="Locations" ReadOnly="true"/>
        <asp:BoundField DataField="Lamp_pro4" HeaderText="Lamp_pro4" 
            SortExpression="Lamp_pro4" />
        <asp:BoundField DataField="Lamp_pro5" HeaderText="Lamp_pro5" 
            SortExpression="Lamp_pro5" />
        <asp:BoundField DataField="AC_Profile5" HeaderText="AC_Profile5" 
            SortExpression="AC_Profile5" />
    </Columns>

</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:TouchPadConnectionString %>" 
    SelectCommand="SELECT * FROM [Quantity]">
</asp:SqlDataSource>

My datakey is Locations and its readonly.

The .cs code for updating is:

protected void GridView2_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        SqlConnection con = new SqlConnection("Data Source=ARCHANA-PC\\ARCHANA;Initial Catalog=TouchPad;Integrated Security=True");
        string LocName = GridView2.DataKeys[e.RowIndex].Values["Locations"].ToString();
        TextBox txt1 = (TextBox)GridView2.Rows[e.RowIndex].FindControl("Lamp_pro4");
        TextBox txt2 = (TextBox)GridView2.Rows[e.RowIndex].FindControl("Lamp_pro5");
        TextBox txt3 = (TextBox)GridView2.Rows[e.RowIndex].FindControl("AC_Profile5");
        string updStmt = "UPDATE Quantity set Lamp_pro4=@Lamp_pro4,Lamp_pro5=@Lamp_pro5,AC_Profile5=@AC_Profile5 where Locations=@locName";

        con.Open();
        SqlCommand updCmd = new SqlCommand(updStmt, con);

        updCmd.Parameters.AddWithValue("@locName", LocName);
        updCmd.Parameters.AddWithValue("@Lamp_pro4", txt1.Text);
        updCmd.Parameters.AddWithValue("@Lamp_pro5", txt2.Text);
        updCmd.Parameters.AddWithValue("@AC_Profile5", txt3.Text);
        updCmd.ExecuteNonQuery();
        GridView2.DataBind();

    }

解决方案

1) You must call GridView2.DataBind() in the end of your treatment

protected void GridView2_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    //GridViewRow row = (GridViewRow)GridView2.Rows[e.RowIndex];

    string LocName = GridView2.DataKeys[e.RowIndex].Values["Locations"].ToString();
    TextBox txt1 = (TextBox)GridView2.Rows[e.RowIndex].FindControl("Lamp_pro4");
    TextBox txt2 = (TextBox)GridView2.Rows[e.RowIndex].FindControl("Lamp_pro5");
    TextBox txt3 = (TextBox)GridView2.Rows[e.RowIndex].FindControl("AC_Profile5");
    con.Open();
    SqlCommand cmd = new SqlCommand("UPDATE Quantity set Lamp_pro4='" + txt1.Text + "',Lamp_pro5='" + txt2.Text + "',AC_Profile5='" + txt3.Text + "' where Locations=" + LocName, con);
    cmd.ExecuteNonQuery();
    con.Close();

    GridView2.EditIndex = -1;
    //BindQuantity();
    GridView2.DataBind();
}

2) Define UpdateCommand on your SqlDataSource

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:TouchPadConnectionString %>" 
    SelectCommand="SELECT * FROM [Quantity]"
    UpdateCommand="UPDATE Quantity set Lamp_pro4 = @Lamp_pro4 ,Lamp_pro5=@Lamp_pro5,AC_Profile5=@AC_Profile5 where Locations=@Locations">
</asp:SqlDataSource>

Link : http://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.sqldatasource.updatecommand.aspx

这篇关于如何更新一个GridView使用绑定列时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆