Asp.net 中的 DataGrid 和 GridView 批量更新

1.DataGrid 批量更新

在html的form中設置如下的DataGrid

 

<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 32px" runat="server"
                Width
="912px" Height="136px" AutoGenerateColumns="False">
                
<Columns>
                    
<asp:TemplateColumn HeaderText="ID">
                        
<ItemTemplate>
                            
<asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.id") %>'>
                            
</asp:Label>
                        
</ItemTemplate>
                    
</asp:TemplateColumn>
                    
<asp:TemplateColumn HeaderText="用戶名">
                        
<ItemTemplate>
                            
<asp:TextBox id=TextBox1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.uname") %>'>
                            
</asp:TextBox>
                        
</ItemTemplate>
                    
</asp:TemplateColumn>
                    
<asp:TemplateColumn HeaderText="性別">
                        
<ItemTemplate>
                            
<asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.sex") %>' ID="Textbox2">
                            
</asp:TextBox>
                        
</ItemTemplate>
                    
</asp:TemplateColumn>
                    
<asp:TemplateColumn HeaderText="年齡">
                        
<ItemTemplate>
                            
<asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.age") %>' ID="Textbox3">
                            
</asp:TextBox>
                        
</ItemTemplate>
                    
</asp:TemplateColumn>
                    
<asp:TemplateColumn HeaderText="電話">
                        
<ItemTemplate>
                            
<asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.tel") %>' ID="Textbox4">
                            
</asp:TextBox>
                        
</ItemTemplate>
                    
</asp:TemplateColumn>
                    
<asp:TemplateColumn HeaderText="地址">
                        
<ItemTemplate>
                            
<asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.addr") %>' ID="Textbox5">
                            
</asp:TextBox>
                        
</ItemTemplate>
                    
</asp:TemplateColumn>
                
</Columns>
            
</asp:DataGrid>
            
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 80px; POSITION: absolute; TOP: 232px" runat="server"
                Text
="批量更新"></asp:Button>

在cs文件中寫如下代碼

 

private void Page_Load(object sender, System.EventArgs e)
        
{
            
// 在此處放置用戶代碼以初始化頁面
            if(!this.IsPostBack)
            
{
                
this.Bind();
            }

        }


        
public void Bind()
        
{
            
try
            
{
                SqlDataAdapter da
=new SqlDataAdapter("select * from userinfo",conn);
                DataSet ds
=new DataSet();
                da.Fill(ds,
"gg");
                
this.DataGrid1.DataSource=ds;
                
this.DataGrid1.DataBind();
            
            }

            
catch(Exception Err)
            
{
                
throw Err;
            }

            
finally
            
{

            }


        }

        
Web 窗體設計器生成的代碼

        
private void Button1_Click(object sender, System.EventArgs e)
        
{
            
int k=0;
            
for(int i=0;i<this.DataGrid1.Items.Count;i++)
            
{
                
int id=int.Parse(((Label)DataGrid1.Items[i].FindControl("Label1")).Text);
                
string username=((TextBox)DataGrid1.Items[i].FindControl("TextBox1")).Text;
                
string sex=((TextBox)DataGrid1.Items[i].FindControl("TextBox2")).Text;
                
int age=int.Parse(((TextBox)DataGrid1.Items[i].FindControl("TextBox3")).Text);
                
string tel=((TextBox)DataGrid1.Items[i].FindControl("TextBox4")).Text;
                
string addr=((TextBox)DataGrid1.Items[i].FindControl("TextBox5")).Text;
                

                
string sql="update userinfo set uname='"+username+"',sex='"+sex+"',age="+age+",tel='"+tel+"',addr='"+addr+"' where id="+id+"";
                SqlCommand cmd
=new SqlCommand(sql,conn);
                
if(conn.State==ConnectionState.Closed)
                
{
                    conn.Open();
                }

                k
=cmd.ExecuteNonQuery();
            
            }

            
if(k>0)
            
{
                Page.RegisterStartupScript(
"","<script>alert('更新成功!');</script>");
            }


    
        }

 

2.GridView 批量更新

在html的form中設置如下的GridView

 

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="873px">
            
<Columns>
                
<asp:TemplateField HeaderText="ID">
                   
                    
<ItemTemplate>
                        
<asp:Label ID="Label1" runat="server" Text='<%# Bind("id") %>'></asp:Label>
                    
</ItemTemplate>
                
</asp:TemplateField>
                
<asp:TemplateField HeaderText="用戶名">
                    
                    
<ItemTemplate>
                        
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("uname") %>'></asp:TextBox>
                    
</ItemTemplate>
                
</asp:TemplateField>
                
<asp:TemplateField HeaderText="性別">
                    
                    
<ItemTemplate>
                        
<asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("sex") %>'></asp:TextBox>
                    
</ItemTemplate>
                
</asp:TemplateField>
                
<asp:TemplateField HeaderText="年齡">
                    
                    
<ItemTemplate>
                        
<asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("age") %>'></asp:TextBox>
                    
</ItemTemplate>
                
</asp:TemplateField>
                
<asp:TemplateField HeaderText="電話">
                   
                    
<ItemTemplate>
                         
<asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("tel") %>'></asp:TextBox>
                    
</ItemTemplate>
                
</asp:TemplateField>
                
<asp:TemplateField HeaderText="地址">
                   
                    
<ItemTemplate>
                       
<asp:TextBox ID="TextBox6" runat="server" Text='<%# Bind("addr") %>'></asp:TextBox>
                    
</ItemTemplate>
                
</asp:TemplateField>
            
</Columns>
        
</asp:GridView>
    
    
</div>
        
<asp:Button ID="Button1" runat="server" Text="批量更新" OnClick="Button1_Click" />

在cs文件中寫如下代碼

 

 SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["conn"]);
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!this.IsPostBack)
        
{
            
this.Bind();
        }

    }

    
private void Bind()
    
{
        
try
        
{
            SqlDataAdapter da 
= new SqlDataAdapter("select * from userinfo",conn);
            DataSet ds 
= new DataSet();
            da.Fill(ds, 
"ff");
            
this.GridView1.DataSource = ds;
            
this.GridView1.DataBind();
        }

        
catch (Exception Err)
        
{
            
throw Err;
        }

        
finally
        
{

        }

    }

    
protected void Button1_Click(object sender, EventArgs e)
    
{
        
int k = 0;
        
foreach (GridViewRow gv in GridView1.Rows)
        
{
            
int id = int.Parse(((Label)gv.FindControl("Label1")).Text);
            
string username = ((TextBox)gv.FindControl("TextBox2")).Text;
            
string sex = ((TextBox)gv.FindControl("TextBox3")).Text;
            
int age = int.Parse(((TextBox)gv.FindControl("TextBox4")).Text);
            
string tel = ((TextBox)gv.FindControl("TextBox5")).Text;
            
string addr = ((TextBox)gv.FindControl("TextBox6")).Text;
            
string sql = "update userinfo set uname='" + username + "',sex='" + sex + "',age=" + age + ",tel='" + tel + "',addr='" + addr + "' where id=" + id + "";
            SqlCommand cmd 
= new SqlCommand(sql, conn);
            
if (conn.State == ConnectionState.Closed)
            
{
                conn.Open();
            }

            k 
= cmd.ExecuteNonQuery();
        }

        
if (k > 0)
        
{
            Page.RegisterStartupScript(
"""<script>alert('更新成功!');</script>");
        }


    }
發佈了38 篇原創文章 · 獲贊 3 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章