使用GridView commandname imagebutton C#插入MySql [英] Insert into MySql using GridView commandname imagebutton C#

查看:40
本文介绍了使用GridView commandname imagebutton C#插入MySql的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从Gridview中的标签中获取数据并将它们插入MySql数据库。当用户单击图像按钮时,数据将被插入到MySql DB中。我似乎无法用这些代码实现:



//后端



< pre lang =c#> protected void GridView1_RowCommand( object sender,GridViewCommandEventArgs e)
{
if (e.CommandName == 插入
{

int i ;
for (i = 0 ; i < ; GridView1.Rows.Count; i ++)
{
GridViewRow row = GridView1.Rows [i];

string bookTitle =(row.FindControl( book as Label).Text;
string date =(row.FindControl( date as Label).Text;
string name =(row.FindControl( name as Label).Text;
string memberID =(row.FindControl( memberID as Label).Text;
string phone =(row.FindControl( phone as Label).Text;

string Query = 插入c_records(bookTitle,date,name,memberID,phone)值(@ bookTitle,@ date,@ name,@ _!ID,@ phone);
MySqlCommand cmd = new MySqlCommand(Query,conn);
cmd.Parameters.AddWithValue( @ bookTitle,bookTitle);
cmd.Parameters.AddWithValue( @ date,date);
cmd.Parameters.AddWithValue( @ name,name);
cmd.Parameters.AddWithValue( @ memberID,memberID);
cmd.Parameters.AddWithValue( @ phone,phone);


cmd.ExecuteNonQuery();

BindData();

}
}

}





//前线结束



 <   asp:GridView     ID   =  GridView1    runat   =  server    BackColor   = #DEBA84    BorderColor   = #DEBA84     BorderStyle   =     BorderWidth   =  1px    CellPadding   =  3    CellSpacing   =  2    AutoGenerateColumns   =  False     宽度  =  721px    showfooter   =  true    OnRowUpdating   =  GridView1_RowUpdating   高度  =  411px    OnRowCommand   =  GridView1_InsDel >  
< >
< asp: TemplateField HeaderText = Id >

< ItemTemplate >
< asp:Label ID = Label5 runat = 服务器 正文 =' <% #Eval( id)%>' > < / a sp:标签 >
< / ItemTemplate >
< / asp:TemplateField >
< < span class =code-leadattribute> asp:TemplateField HeaderText = 书名 >
< ItemTemplate >
< span class =code-keyword>< asp:Label ID = book runat = server 文字 =' <% #Eval( bookTitle)%>' > < / asp:标签 >
< / ItemTemplate >
< / asp:TemplateField >
< asp:TemplateField HeaderText = 日期 >
< ItemTemplate >
< asp:标签 ID = date runat = server 文本 =' <% #Eval( date)%>' > < / asp:标签 >
< / ItemTemplate >
< span class =code-keyword>< / asp:TemplateField >
< asp:TemplateField HeaderText = 名称 >
< ItemTemplate >
< asp:标签 ID = 名称 runat = server 文字 =' <% #Eval( 名称)%>' > < / asp:标签 >
< / ItemTemplate >
< / asp:TemplateField >
< asp:TemplateField HeaderText = 会员ID >
< ItemTemplate >
< asp:标签 ID = memberID runat = server 文本 =' <% #Eval( memberID)%>' > < / asp:Label >
< / ItemTemplate > ;
< / asp:TemplateField >
< asp:TemplateField HeaderText = 电话 >
< ItemTemplate >
< asp:标签 ID = phone runat = server 文字 =' & lt;% #Eval( phone)%>' > < / asp:Label >
< / ItemTemplate >
< / asp :TemplateField >


< asp:TemplateField HeaderText = 退出 >
< span class =code-keyword>< ItemTemplate >
< asp:ImageButton OnClientClick = return abc(this); ID = signOut CommandName = 插入 < span class =code-attribute> AlternateText = Available ImageUrl = 〜/ Images / unclick.png runat = server / >
< / ItemTemplate >
< / asp:TemplateField >


< asp:TemplateField >

< ItemTemplate >
< asp:LinkBut​​ton ID = 提交 runat = server 文字 = 提交 CommandName = 更新 > < img src = Images / save.jpg /
> < / asp:LinkBut​​ton >
< / ItemTemplate >

< / asp:TemplateField >





如果有任何其他解决方案,请不要犹豫告诉我。

解决方案

您似乎在一个命令中组合了两个查询。不要那样做。而是单独运行bith。您似乎也设置了两次参数的值。至少在快速查看时我没有理由这样做。



另请注意,某些参数在命名时不匹配。



所以代替

 conn.Open(); 
string q4 = 插入c_records( bookTitle,date,name,memberID,phone)值(@ bookTitle,@ date,@ name,@ _!ID,@ phone);;
string q5 = 从客户中删除客户其中name = @name和memberID = @memberID;;
MySqlCommand cmd = new MySqlCommand(q4 + q5,conn);
cmd.Parameters.AddWithValue( @ date,date);
cmd.Parameters.AddWithValue( @ memberID,memberID);
cmd.Parameters.AddWithValue( @ phone,phone);
cmd.Parameters.AddWithValue( @ book,bookTitle);
cmd.Parameters.AddWithValue( @ name,name);
cmd.Parameters [ @ book]。Value = bookTitle;
cmd.Parameters [ @ date]。Value = date;
cmd.Parameters [ @ name]。Value = name;
cmd.Parameters [ @ memberID]。Value = memberID;
cmd.Parameters [ @ phone]。值=电话;
MySqlDataAdapter adp = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds);



你应该有类似

 conn.Open(); 

string q4 = 插入c_records(bookTitle,date,name,memberID,phone)值(@ bookTitle,@ date,@ name,@ _!ID,@ phone);;
MySqlCommand cmd = new MySqlCommand(q4,conn);
cmd.Parameters.AddWithValue( @ bookTitle,bookTitle);
cmd.Parameters.AddWithValue( @ date,date);
cmd.Parameters.AddWithValue( @ name,name);
cmd.Parameters.AddWithValue( @ memberID,memberID);
cmd.Parameters.AddWithValue( @ phone,phone);
cmd.ExecuteNonQuery();

string q5 = 从姓名= @name和memberID = @memberID的客户中删除客户;;
cmd = new MySqlCommand(q5,conn);
cmd.Parameters.AddWithValue( @ name,name);
cmd.Parameters.AddWithValue( @ memberID,memberID);
cmd.ExecuteNonQuery();
...


I want to fetch the data from labels in Gridview and insert them to MySql database. When users click the imagebutton, the data will be inserted to MySql DB. I can't seem to make it happen with these codes:

//The Backend

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Insert")
            {

                int i;
                for (i = 0; i < GridView1.Rows.Count; i++)
                {
                    GridViewRow row = GridView1.Rows[i];

                    string bookTitle = (row.FindControl("book") as Label).Text;
                    string date = (row.FindControl("date") as Label).Text;
                    string name = (row.FindControl("name") as Label).Text;
                    string memberID = (row.FindControl("memberID") as Label).Text;
                    string phone = (row.FindControl("phone") as Label).Text;

                    string Query = "insert into c_records (bookTitle, date, name, memberID, phone) values (@bookTitle, @date, @name, @memberID, @phone)";
                    MySqlCommand cmd = new MySqlCommand(Query, conn);
                    cmd.Parameters.AddWithValue("@bookTitle", bookTitle);
                    cmd.Parameters.AddWithValue("@date", date);
                    cmd.Parameters.AddWithValue("@name", name);
                    cmd.Parameters.AddWithValue("@memberID", memberID);
                    cmd.Parameters.AddWithValue("@phone", phone);

                    
                    cmd.ExecuteNonQuery();

                    BindData();
                    
                }
            }

        }



//The Front End

<asp:GridView ID="GridView1" runat="server" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" AutoGenerateColumns="False"  Width="721px" showfooter="true" OnRowUpdating="GridView1_RowUpdating" Height="411px" OnRowCommand="GridView1_InsDel">
           <Columns>
               <asp:TemplateField HeaderText="Id">
                   <ItemTemplate>
                       <asp:Label ID="Label5" runat="server" Text='<%# Eval("id") %>'></asp:Label>
                   </ItemTemplate>
               </asp:TemplateField>
               <asp:TemplateField HeaderText="Book Title">
                   <ItemTemplate>
                       <asp:Label ID="book" runat="server" Text='<%# Eval("bookTitle") %>'></asp:Label>
                   </ItemTemplate>
               </asp:TemplateField>
               <asp:TemplateField HeaderText="Date">
                   <ItemTemplate>
                       <asp:Label ID="date" runat="server" Text='<%# Eval("date") %>'></asp:Label>
                   </ItemTemplate>
               </asp:TemplateField>
               <asp:TemplateField HeaderText="Name">
                   <ItemTemplate>
                       <asp:Label ID="name" runat="server" Text='<%# Eval("name") %>'></asp:Label>
                   </ItemTemplate>
               </asp:TemplateField>
               <asp:TemplateField HeaderText="Member ID">
                   <ItemTemplate>
                       <asp:Label ID="memberID" runat="server" Text='<%# Eval("memberID") %>'></asp:Label>
                   </ItemTemplate>
               </asp:TemplateField>
               <asp:TemplateField HeaderText="Phone">
                   <ItemTemplate>
                       <asp:Label ID="phone" runat="server" Text='<%# Eval("phone") %>'></asp:Label>
                   </ItemTemplate>
               </asp:TemplateField>


               <asp:TemplateField HeaderText="Sign Out">
                   <ItemTemplate>
                       <asp:ImageButton OnClientClick="return abc(this);" ID="signOut" CommandName="Insert" AlternateText="Available" ImageUrl="~/Images/unclick.png" runat="server" />
                   </ItemTemplate>
               </asp:TemplateField>


               <asp:TemplateField>

                   <ItemTemplate>
                       <asp:LinkButton ID="submit" runat="server" Text="Submit" CommandName="Update"><img src="Images/save.jpg" /></asp:LinkButton>
                   </ItemTemplate>

               </asp:TemplateField>



Please don't hesitate to tell me if there are any other solution.

解决方案

You seem to combine both queries in a single command. DOn't do that. Instead run bith separately. You also seem to set the values for the parameters twice. At least when having a quick look I see no reason for that.

Also note that some of the parameters had a mismatch in naming.

So instead of

conn.Open();
string q4 = "insert into c_records (bookTitle, date, name, memberID, phone) values (@bookTitle, @date, @name, @memberID, @phone);";
string q5 = "delete customers from customers where name = @name and memberID = @memberID;";
MySqlCommand cmd = new MySqlCommand(q4 + q5, conn);
cmd.Parameters.AddWithValue("@date", date);
cmd.Parameters.AddWithValue("@memberID", memberID);
cmd.Parameters.AddWithValue("@phone", phone);
cmd.Parameters.AddWithValue("@book", bookTitle);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters["@book"].Value = bookTitle;
cmd.Parameters["@date"].Value = date;
cmd.Parameters["@name"].Value = name;
cmd.Parameters["@memberID"].Value = memberID;
cmd.Parameters["@phone"].Value = phone;
MySqlDataAdapter adp = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds);


You should have something like

conn.Open();

string q4 = "insert into c_records (bookTitle, date, name, memberID, phone) values (@bookTitle, @date, @name, @memberID, @phone);";
MySqlCommand cmd = new MySqlCommand(q4, conn);
cmd.Parameters.AddWithValue("@bookTitle", bookTitle);
cmd.Parameters.AddWithValue("@date", date);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@memberID", memberID);
cmd.Parameters.AddWithValue("@phone", phone);
cmd.ExecuteNonQuery();

string q5 = "delete customers from customers where name = @name and memberID = @memberID;";
cmd = new MySqlCommand(q5, conn);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@memberID", memberID);
cmd.ExecuteNonQuery();
...


这篇关于使用GridView commandname imagebutton C#插入MySql的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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