插入
这是代码aspx.cs
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
SqlDataSource1.Insert();
}
这是插入命令
的.aspx代码 InsertCommand="INSERT INTO [Net Weight Tracking] (Date, [Unit UPC Base Item], [Item (Optional)], [Preset Number], [Product Group], Shift, [Rotation Code], BBD, [Operator Name], Supervisor, [Production Line], [Bagger Number], [Start Time], [Stop Time], [Under Counts], [Label Wt on Pkg (g)], [Machine Tare Wt (g)], [Actual Tare Wt (g)], [Verify Target Wt (g)], [Total Count (Proper)], [Mean Gross (g)], [Rptd Mean Net (g)], [Std Dev (g)], [Max (g)], [Min (g)], [TNE (g)], Comments, Field1, Field2, Field3) VALUES (@date, @unit, @item, @preset, @prodgroup, @shift, @rotationcode, @bbd, @operatorname, @supervisorname, @productionline, @baggernumber, @starttime, @stoptime, @undercount, @labelwt, @machine, @actual, @verify, @totalcount, @meangross, @rptd, @std, @mx, @min, @tne, @comments, @field, @field2, @field3)"
<InsertParameters>
<asp:Parameter Name="Date" />
<asp:Parameter Name="UnitUPCBaseItem" />
<asp:Parameter Name="Item" />
<asp:Parameter Name="Preset" />
<asp:Parameter Name="Product" />
<asp:Parameter Name="Shift" />
<asp:Parameter Name="Rotation" />
<asp:Parameter Name="BBD" />
<asp:Parameter Name="Operator" />
<asp:Parameter Name="Supervisor" />
<asp:Parameter Name="Production" />
<asp:Parameter Name="Bagger" />
<asp:Parameter Name="Start" />
<asp:Parameter Name="Stop" />
<asp:Parameter Name="Under" />
<asp:Parameter Name="Label" />
<asp:Parameter Name="Machine" />
<asp:Parameter Name="Actual" />
<asp:Parameter Name="Verify" />
<asp:Parameter Name="Total" />
<asp:Parameter Name="Mean" />
<asp:Parameter Name="Rptd" />
<asp:Parameter Name="Std" />
<asp:Parameter Name="Max" />
<asp:Parameter Name="Min" />
<asp:Parameter Name="TNE" />
<asp:Parameter Name="Comments" />
<asp:Parameter Name="Field1" />
<asp:Parameter Name="Field2" />
<asp:Parameter Name="Field3" />
<asp:Parameter Name="date" />
<asp:Parameter Name="unit" />
<asp:Parameter Name="item" />
<asp:Parameter Name="preset" />
<asp:Parameter Name="prodgroup" />
<asp:Parameter Name="shift" />
<asp:Parameter Name="rotationcode" />
<asp:Parameter Name="bbd" />
<asp:Parameter Name="operatorname" />
<asp:Parameter Name="supervisorname" />
<asp:Parameter Name="productionline" />
<asp:Parameter Name="baggernumber" />
<asp:Parameter Name="starttime" />
<asp:Parameter Name="stoptime" />
<asp:Parameter Name="undercount" />
<asp:Parameter Name="labelwt" />
<asp:Parameter Name="machine" />
<asp:Parameter Name="actual" />
<asp:Parameter Name="verify" />
<asp:Parameter Name="totalcount" />
<asp:Parameter Name="meangross" />
<asp:Parameter Name="rptd" />
<asp:Parameter Name="std" />
<asp:Parameter Name="mx" />
<asp:Parameter Name="min" />
<asp:Parameter Name="tne" />
<asp:Parameter Name="comments" />
<asp:Parameter Name="field" />
<asp:Parameter Name="field2" />
<asp:Parameter Name="field3" />
</InsertParameters>
我输入所有数据并单击插入,它在我的sql表中插入一个空行,包含所有空值,我希望数据插入数据库并反映在网格上
我认为gridview没有得到值,所以我在插件上尝试这个仍然无效:
<InsertParameters>
<asp:FormParameter FormField="TextBox31" Name="Date" Type="DateTime" />
<asp:FormParameter FormField="TextBox32" Name="Unit_UPC_Base_Item"
Type="String" />
<asp:FormParameter FormField="TextBox33" Name="column1" Type="String" />
<asp:FormParameter FormField="TextBox35" Name="Product_Group" Type="String" />
<asp:FormParameter FormField="TextBox36" Name="Shift" Type="String" />
<asp:FormParameter FormField="TextBox37" Name="Rotation_Code" Type="String" />
<asp:FormParameter FormField="TextBox38" Name="BBD" Type="String" />
<asp:FormParameter FormField="TextBox39" Name="Operator_Name" Type="String" />
<asp:FormParameter FormField="TextBox40" Name="Supervisor" Type="String" />
<asp:FormParameter FormField="TextBox41" Name="Production_Line" Type="String" />
<asp:FormParameter FormField="TextBox42" Name="Bagger_Number" Type="Double" />
<asp:FormParameter FormField="TextBox43" Name="Start_Time" Type="DateTime" />
<asp:FormParameter FormField="TextBox44" Name="Stop_Time" Type="DateTime" />
<asp:FormParameter FormField="TextBox45" Name="Under_Counts" Type="Double" />
<asp:FormParameter FormField="TextBox46" Name="column2" Type="Double" />
<asp:FormParameter FormField="TextBox47" Name="column3" Type="Double" />
<asp:FormParameter FormField="TextBox48" Name="column4" Type="Double" />
<asp:FormParameter FormField="TextBox49" Name="column5" Type="Double" />
<asp:FormParameter FormField="TextBox50" Name="column6" Type="Double" />
<asp:FormParameter FormField="TextBox51" Name="column7" Type="Double" />
<asp:FormParameter FormField="TextBox52" Name="column8" Type="Double" />
<asp:FormParameter FormField="TextBox53" Name="column9" Type="Double" />
<asp:FormParameter FormField="TextBox54" Name="column10" Type="Double" />
<asp:FormParameter FormField="TextBox55" Name="column11" Type="Double" />
<asp:FormParameter FormField="TextBox56" Name="column12" Type="Double" />
<asp:FormParameter FormField="TextBox57" Name="Comments" Type="String" />
<asp:FormParameter FormField="TextBox58" Name="Field1" Type="DateTime" />
<asp:FormParameter FormField="TextBox59" Name="Field2" Type="DateTime" />
<asp:FormParameter FormField="TextBox60" Name="Field3" Type="String" />
<asp:FormParameter FormField="TextBox34" Name="Preset_Number" />
</InsertParameters>
我有rowcommand事件,我想点击gridview上的按钮会触发此事件,但确实没有获取值。
PlZ帮助
解决方案已实施但未运行:
if (e.CommandName == "InsertRow")
{
SqlDataSource1.InsertParameters["Date"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox31")).Text;
SqlDataSource1.InsertParameters["Unit_UPC_Base_Item"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox32")).Text;
SqlDataSource1.InsertParameters["column1"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox33")).Text;
SqlDataSource1.InsertParameters["Preset_Number"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox34")).Text;
SqlDataSource1.InsertParameters["Product_Group"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox35")).Text;
SqlDataSource1.InsertParameters["Shift"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox36")).Text;
SqlDataSource1.InsertParameters["Rotation_Code"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox37")).Text;
SqlDataSource1.InsertParameters["BBD"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox38")).Text;
SqlDataSource1.InsertParameters["Operator_Name"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox39")).Text;
SqlDataSource1.InsertParameters["Supervisor"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox40")).Text;
SqlDataSource1.InsertParameters["Production_Line"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox41")).Text;
SqlDataSource1.InsertParameters["Bagger_Number"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox42")).Text;
SqlDataSource1.InsertParameters["Start_Time"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox43")).Text;
SqlDataSource1.InsertParameters["Stop_Time"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox44")).Text;
SqlDataSource1.InsertParameters["Under_Counts"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox45")).Text;
SqlDataSource1.InsertParameters["column2"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox46")).Text;
SqlDataSource1.InsertParameters["column3"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox47")).Text;
SqlDataSource1.InsertParameters["column4"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox48")).Text;
SqlDataSource1.InsertParameters["column5"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox49")).Text;
SqlDataSource1.InsertParameters["column6"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox50")).Text;
SqlDataSource1.InsertParameters["column7"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox51")).Text;
SqlDataSource1.InsertParameters["column8"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox52")).Text;
SqlDataSource1.InsertParameters["column9"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox53")).Text;
SqlDataSource1.InsertParameters["column10"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox54")).Text;
SqlDataSource1.InsertParameters["column11"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox55")).Text;
SqlDataSource1.InsertParameters["column12"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox56")).Text;
SqlDataSource1.InsertParameters["Comments"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox57")).Text;
SqlDataSource1.InsertParameters["Field1"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox58")).Text;
SqlDataSource1.InsertParameters["Field2"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox59")).Text;
SqlDataSource1.InsertParameters["Field3"].DefaultValue = ((TextBox)GridView1.FooterRow.FindControl("TextBox60")).Text;
SqlDataSource1.Insert();
}
正如你所说,我使用简单的参数
<InsertParameters>
<asp:Parameter Name="Date" Type="DateTime" />
<asp:Parameter Name="Unit_UPC_Base_Item" Type="String" />
<asp:Parameter Name="column1" Type="String" />
<asp:Parameter Name="Product_Group" Type="String" />
<asp:Parameter Name="Shift" Type="String" />
<asp:Parameter Name="Rotation_Code" Type="String" />
<asp:Parameter Name="BBD" Type="String" />
<asp:Parameter Name="Operator_Name" Type="String" />
<asp:Parameter Name="Supervisor" Type="String" />
<asp:Parameter Name="Production_Line" Type="String" />
<asp:Parameter Name="Bagger_Number" Type="Double" />
<asp:Parameter Name="Start_Time" Type="DateTime" />
<asp:Parameter Name="Stop_Time" Type="DateTime" />
<asp:Parameter Name="Under_Counts" Type="Double" />
<asp:Parameter Name="column2" Type="Double" />
<asp:Parameter Name="column3" Type="Double" />
<asp:Parameter Name="column4" Type="Double" />
<asp:Parameter Name="column5" Type="Double" />
<asp:Parameter Name="column6" Type="Double" />
<asp:Parameter Name="column7" Type="Double" />
<asp:Parameter Name="column8" Type="Double" />
<asp:Parameter Name="column9" Type="Double" />
<asp:Parameter Name="column10" Type="Double" />
<asp:Parameter Name="column11" Type="Double" />
<asp:Parameter Name="column12" Type="Double" />
<asp:Parameter Name="Comments" Type="String" />
<asp:Parameter Name="Field1" Type="DateTime" />
<asp:Parameter Name="Field2" Type="DateTime" />
<asp:Parameter Name="Field3" Type="String" />
<asp:Parameter Name="Preset_Number" />
</InsertParameters>
答案 0 :(得分:1)
那些不是FormParameters
,它们是GridView字段,无法通过这样的表单访问。如果它们是Gridview控件中的ControlParameters
。但是你没有做标准的插入,所以实现上述目标的最简单方法是“
Parameters
CommandName
,如“MyInsert”而不是“插入”,单词“插入”保留用于标准网格视图操作,并从页脚提取数据,虽然常见,但不是标准。 / LI>
RowCommand
事件中,请确保在调用e
函数之前对e.CommandName="MyInsert"
的{{1}}参数进行检查。SqlDataSource1.Insert()
之前,您必须将所有字段分配到Insert()
集合,如下所示:VB代码,但转换应该是一件简单的事情
SqlDataSource1.InsertParameters
我认为就是这样 - 如果我错过任何事情让我知道,我会更新帖子
更新2015/03 / 02~16:31
Private Sub GridView1_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GridView1.RowCommand
If e.CommandName = "MyInsert" Then
SqlDataSource1.InsertParameters("Date").DefaultValue = foo("TextBox31")
SqlDataSource1.InsertParameters("Unit_UPC_Base_Item").DefaultValue = foo("TextBox32")
SqlDataSource1.InsertParameters("column1").DefaultValue = foo("TextBox33")
.
. (yada yada yada)
.
SqlDataSource1.Insert()
End If
End Sub
' Helper function
Private Function foo( ControlID As String) As String
' add error checking
Return CType(GridView1.FooterRow.FindControl(ControlID), TextBox).Text
End Function
事件 当您使用Gridview上下文菜单并“启用选择”时,VisualStudio会将CommandField插入到字段列表的顶部。使用对话框编辑列时,可以看到命令字段中可用的所有选项。其中包括:“插入”,“选择”,“删除”,“取消”等......这些都与标准的GridView操作一致。如果为删除命令提供了具有sql或存储过程的RowCommand
,则删除选项将可用,如果为Insert提供sql或存储过程,则同样可以使用Insert
每个操作的AutoGenerated CommandName是“Select $ N”,“Delete $ N”等,其中N是SqlDataSource
命令按钮中的行号。每个事件都有自己的事件处理程序,其名称为“RowSelecting”,“RowSelected”,“RowDeleting”,“RowDeleted”等。
除了引发这些事件之外,gridview还将这些标准事件“冒泡”到RowCommand事件处理程序。
现在您必须了解有关gridview的一件事,这直接来自Microsoft:
不直接支持将记录插入数据源 GridView控件。但是,可以通过插入记录 将GridView控件与DetailsView或。一起使用 FormView控件。有关更多信息,请参阅DetailsView或FormView, 分别
那应该告诉你一些事情。这是违反直觉的,因为如果你在Gidview中查看CommandField,你可以清楚地看到插入命令。使用带有一系列文本框的页脚行通常是如何为GridView控件快速插入行插入。
请记住,所有命令都会通过RowCommand传递,即使它们有自己的处理程序(选择,取消,删除等),我们通常也不会在那里查找它们。
那么,你什么时候检查RowCommand.CommandName?无论何时尝试处理Gridview不支持的事件,都要检查。
如果要在不使用GridView
插入命令的情况下进行插入,首先要禁用CommandField中的Insert。它将可用,因为已连接的GridView
已定义了插入命令。
您将CommandField转换为TemplateField并编辑模板并向FooterTemplate添加一个Button:
SqlDataSource
现在,您需要验证某些内容。
如果上面定义的按钮正在触发CommandName为“Insert”的CommandEvent,那么你要么启用了Insert(你不应该),要么你的自定义CommandName以“插入”这个词为开头错误触发Insert事件。
如果你还记得GridView呈现的任何标准命令都是“Select $ 3”。这将使用CommandName =“Select”触发选择/选定事件和气泡到RowCommand。
我认为您创建的按钮会导致插入事件被触发。我错了,但值得检查。在任何情况下,我都会尝试将CommandName更改为以保留字以外的其他内容开头。