ASP.. NET可以命令参数计算为2列
本文关键字:计算 2列 参数 命令 NET ASP | 更新日期: 2023-09-27 18:14:57
我有一个CommandArgument,从我的GridView中的LinkButton中获取1个参数,用于在GridView中删除行。
我的aspx.cs中的代码:
LinkButton lnk = (LinkButton)sender;
string stid = lnk.CommandArgument.ToString();
SqlConnection conn = new SqlConnection("<Connection>");
string sql = string.Format("DELETE FROM [ConflictingRole] where Role like '%{0}%'",stid);
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
cmd.ExecuteNonQuery();
.aspx中的代码:
<asp:GridView ID="GridView1" ondatabound="gv_DataBound" runat="server" DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="UserSelection" OnCheckedChanged="CRUserSelector_CheckedChanged" ondatabound="gv_DataBound" runat="server" />
<asp:LinkButton ID="lnkDelete" runat="server" onclick="lnkDelete_Click" Text="Delete" CommandArgument='<%# Eval("Role") %>' PostBackUrl="~/CRList.aspx" ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我当前的CommandArgument只接受一个列名,即Role。然而,我想采取2个列名,并在我的字符串sql语句中使用2个列名在aspx.cs.
原因:我有多行具有相同的"Row"值,因此如果我根据"Role"列的值删除,我将删除多行。我想从"Role"answers"ConflictingRole"中获取值,用于删除sql查询。
我可以知道这样做是否可能吗?谢谢。
可以通过将两列或多列转换为带逗号分隔符的字符串来传递值。
CommandArgument='<%# Eval("Role") + "," + Eval("ConflictingRole") %>'
拆分处理程序中的commandparameter值,
string []ar=lnk.CommandArgument.ToString().Split(',');
编辑:你可以这样写:
string sql="DELETE FROM [ConflictingRoles] where Role like @role AND ConflictingRole like @crole";
或
string sql="DELETE FROM [ConflictingRoles] where Role=@role AND ConflictingRole=@crole";
或硬编码sql语句(不推荐)
string sql=string.Format("DELETE FROM [ConflictingRoles] where Role like '%{0}%' AND
ConflictingRole like '%{1}%'",ar[0],ar[1]);
在您的链接按钮中,您可以将命令参数更改为:
CommandArgument='<%# Eval("Role")+"::"+Eval("ConflictingRole") %>'
然后在你的代码后面,你可以通过下面的操作来访问它们。
string[] both = lnk.CommandArgument.ToString().Split(new string[]{"::"},StringSplitOptions.None);
string first = both[0];
string second = both[1];
不是很优雅…但我想它会解决你的需求。
试试下面的代码。
string[] both = lnk.CommandArgument.ToString().Split(new string[]{"::"},StringSplitOptions.None);
string first = both[0];
string second = both[1];