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查询。

我可以知道这样做是否可能吗?

谢谢。

ASP.. NET可以命令参数计算为2列

可以通过将两列或多列转换为带逗号分隔符的字符串来传递值。

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];