Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在CommandArgument中使用两个参数并将其提取以在查询中使用_C#_Asp.net_Sql - Fatal编程技术网

C# 如何在CommandArgument中使用两个参数并将其提取以在查询中使用

C# 如何在CommandArgument中使用两个参数并将其提取以在查询中使用,c#,asp.net,sql,C#,Asp.net,Sql,我有以下ASP.net页面,其中显示了名称和最后四个ssn编号,并在中继器中有一个按钮: <tr> <td><%# Eval("name").ToString() %></td> <td><%# Eval("ssn3").ToString() %></td> <td><asp:Button ID="btnGeneratePDF" runat="server" Tex

我有以下ASP.net页面,其中显示了名称和最后四个ssn编号,并在中继器中有一个按钮:

<tr>
     <td><%# Eval("name").ToString() %></td>
     <td><%# Eval("ssn3").ToString() %></td>
     <td><asp:Button ID="btnGeneratePDF" runat="server" Text="Generate PDF" CommandArgument='<%# Eval("name").ToString() + ", " + Eval("ssn3").ToString() %>' onclick="btnGeneratePDF_Click" /></td>
</tr>
我得到以下错误:

错误1“btngeneratedf\u Click”匹配委托”系统没有重载。EventHandler“C:\Users\usrs\Documents\Visual Studio 2012\Projects\PDFForms\searchcreate.aspx 41

如何解决错误

protected void btnGeneratePDF_Click(object sender, EventArgs e)
在单击事件中将
CommandEventArgs
更改为
EventArgs

试试这个

protected void btnGeneratePDF_Click(object sender, EventArgs e)
{
  //Get the reference of the clicked button.
  Button button = (sender as Button);
  //Get the command argument
  string commandArgument = button.CommandArgument;
}
在单击事件中将
CommandEventArgs
更改为
EventArgs

试试这个

protected void btnGeneratePDF_Click(object sender, EventArgs e)
{
  //Get the reference of the clicked button.
  Button button = (sender as Button);
  //Get the command argument
  string commandArgument = button.CommandArgument;
}

您可以使用命令名字段存储第二个参数,或者使用ASP:HiddenField、CustomProperty ect

您可以使用命令名字段存储第二个参数,或者使用ASP:HiddenField、CustomProperty ect

因此,如果您在
Repeater
控件中有此布局,则应如何处理命令事件

<asp:Repeater runat="server" ID="Repeater1"
              OnItemCommand="btnGeneratePDF_Click"
              ...

因此,如果您在
中继器
控件中有此布局,则以下是您应该如何处理命令事件

<asp:Repeater runat="server" ID="Repeater1"
              OnItemCommand="btnGeneratePDF_Click"
              ...

您正在尝试将命令事件执行为单击事件。
正确答案应该是:

<tr>
     <td><%# Eval("name").ToString() %></td>
     <td><%# Eval("ssn3").ToString() %></td>
     <td><asp:Button ID="btnGeneratePDF" runat="server" Text="Generate PDF" CommandArgument='<%# Eval("name").ToString() + ", " + Eval("ssn3").ToString() %>' OnCommand="btnGeneratePDF_Command" /></td>
</tr>

创建此新事件时,您将注意到事件参数更改为CommandEventArgs。
您可以继续代码

尝试将命令事件执行为单击事件。 正确答案应该是:

<tr>
     <td><%# Eval("name").ToString() %></td>
     <td><%# Eval("ssn3").ToString() %></td>
     <td><asp:Button ID="btnGeneratePDF" runat="server" Text="Generate PDF" CommandArgument='<%# Eval("name").ToString() + ", " + Eval("ssn3").ToString() %>' OnCommand="btnGeneratePDF_Command" /></td>
</tr>

创建此新事件时,您将注意到事件参数更改为CommandEventArgs。

“您可以继续编写代码”

按钮
单击“委托”需要一个
EventArgs
参数而不是
CommandEventArgs
来处理按钮发送的命令,订阅中继器的命令事件如果我将其更改为
EventArgs
我会收到以下错误:`error 1'System.EventArgs'不包含'CommandArgument'的定义,并且找不到接受'System.EventArgs'类型的第一个参数的扩展方法'CommandArgument'(您是否缺少using指令或程序集引用?)C:\Users\usrs\Documents\Visual Studio 2012\Projects\PDFForms\searchcreate.aspx.cs 38 25 C:\…\PDFForms`使用参数化查询!您对SQL注入非常开放,甚至有一个名为SSN…@SiKni8
的列,其中[name]='“+k+”和[ssn3]='+C+”";
…否.
按钮
单击委托需要一个
EventArgs
参数而不是
CommandEventArgs
要处理按钮发送的命令,请订阅中继器的命令事件如果我将其更改为
EventArgs
我得到以下错误:`error 1's System.EventArgs'不包含找不到“CommandArgument”和接受“System.EventArgs”类型的第一个参数的扩展方法“CommandArgument”(是否缺少using指令或程序集引用?)C:\Users\usrs\Documents\visualstudio 2012\Projects\PDFForms\searchcreate.aspx.cs 38 25 C:\…\PDFForms`使用参数化查询!您对SQL注入非常开放,甚至有一个名为SSN…@SiKni8
的列,其中[name]='“+k+”'和[ssn3]='“+C+”“;
…否…如果我将其更改为
EventArgs
则会出现以下错误:`error 1'System.EventArgs'不包含'CommandArgument'的定义,并且找不到接受'System.EventArgs'类型的第一个参数的扩展方法'CommandArgument'(是否缺少using指令或程序集引用?)C:\Users\usrs\Documents\visualstudio 2012\Projects\PDFForms\searchcreate.aspx.cs 38 25 C:\…\PDFForms`
sender
将是按钮,强制转换并查询它的
CommandArgument
属性。为什么不改为处理Repeater的事件?它提供命令参数naturally@Andrei当前位置好,我确实非常怀疑is处理程序甚至会按原样连接-我建议你添加一个答案…@Andrei请给我一个我可以使用的示例:)如果将其更改为
EventArgs
,则会出现以下错误:`error 1'System.EventArgs'不包含'CommandArgument'的定义,并且找不到接受'System.EventArgs'类型的第一个参数的扩展方法'CommandArgument'(是否缺少using指令或程序集引用?)C:\Users\usrs\Documents\visualstudio 2012\Projects\PDFForms\searchcreate.aspx.cs 38 25 C:\…\PDFForms`
sender
将是按钮,强制转换然后查询它的
CommandArgument
属性。为什么?为什么不处理中继器的事件呢?它提供命令参数naturally@Andrei:好地方,事实上,我非常怀疑这个处理程序是否会按原样连接-我建议你添加一个答案…@Andrei请给我一个我可以使用的示例:)我通过按钮更改为:
,并在我的中继器中添加了
OnItemCommand
,我应该如何更改btnGeneratorPDF\u Click的函数?@SiKni8,事实上你不需要改变它,那里没有什么特别的。虽然我认为MessageBox调用不起作用MessageBox只在从VS运行时起作用,所以我想:)我应该在按钮中添加什么?没有点击事件?@SiKni8,没有,在这种情况下,你不需要为按钮处理点击事件OK,这是固定的,我想。。。现在查询为空白:/I将打开一个新问题并发布一个链接。谢谢。我按按钮更改为:
,并在我的中继器中添加了
OnItemCommand
,我应该如何更改btnGeneratorPDF的功能?单击?@SiKni8,事实上你不需要更改它,那里没有任何具体的内容。虽然我认为MessageBox调用不起作用MessageBox只在从VS运行时起作用,所以我想:)我应该在按钮中添加什么?没有点击事件?@SiKni8,没有,您不需要为该ca中的按钮处理点击事件