私が抱えている問題は、ボタンのクリックで複数の引数を渡す必要があることです。sqlqueryから値を出力するリピーターオブジェクトがあり、ボタンには同じクエリからの引数があります
これが私のリピーターです:
<asp:Repeater ID="Edit_Repeater" runat="server" DataSourceID="Edit_Repeater_Source">
<HeaderTemplate>
<table class="u_Repeater">
<tr>
<th>
Group Name:
</th>
<th>
Permission Level:
</th>
<th>
Remove:
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%#DataBinder.Eval(Container.DataItem, "Group_Name")%>
</td>
<td>
<%#DataBinder.Eval(Container.DataItem, "Name")%>
</td>
<td>
<asp:Button ID="Submit_Remove" runat="server" Text="Remove Permission" OnClick="Remove_Permission" CommandArgument='<%# Eval("GID") + ";" + Eval("PID") %>' />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
そして、これが私の背後にあるコードです:
protected void Remove_Permission(object sender, CommandEventArgs e)
{
string[] arg = new string[2];
string[] commandArgs = e.CommandArgument.ToString().Split(';');
float GID = float.Parse(arg[0]);
float PID = float.Parse(arg[1]);
string UID = User_ID.SelectedValue;
using (SqlConnection connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["app_migrationConnectionString"].ConnectionString))
{
SqlCommand cmd = new SqlCommand("DELETE FROM Membership WHERE GID = @GID AND PID = @PID AND UID = @UID", connection);
cmd.Parameters.Add("@GID", SqlDbType.BigInt, -1);
cmd.Parameters["@GID"].Value = GID;
cmd.Parameters.Add("@PID", SqlDbType.BigInt, -1);
cmd.Parameters["@PID"].Value = PID;
cmd.Parameters.Add("@UID", SqlDbType.NVarChar, -1);
cmd.Parameters["@UID"].Value = UID;
try
{
connection.Open();
cmd.ExecuteNonQuery();
connection.Close();
}
catch (Exception ex)
{
throw ex;
}
}
}
ビルドエラーは発生しませんが、ページを実行すると、次のようなコンパイルエラーが発生します。
'Remove_Permission'のオーバーロードはデリゲート'System.EventHandler'と一致しません
私はコードが正しいとほぼ確信しています、それで問題は何ですか?