我想知道是否有办法从网格视图中右键单击选择一行并删除。
我有删除声明,但我没有如何选择右键单击。
我看过一些建议,说要使用mousebuttons.right,但这对我不起作用,并且(当前上下文中不存在鼠标按钮)
这是我目前的填写声明
protected void getGLDepts()
{
mpSearch.Focus();
string[] mpvalue = mpSearch.Text.Split('(',')');
string coa = "";
string map = "";
SqlConnection myconn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Rollup2ConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = myconn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "USP_GET_GL_BY_DEPT";
cmd.Parameters.Add("@DEPTCODE", SqlDbType.Int).Value = mpvalue[1].ToString();
foreach (ListItem item in mpcbl.Items)
{
if (item.Selected)
{
coa += "','" + item.Value;
}
}
if (coa != "") coa = coa.Substring(2, coa.Length - 2) + "'";
else coa = "''";
cmd.Parameters.Add("@COA", SqlDbType.VarChar).Value = coa;
foreach (ListItem item in exceptdefault.Items)
{
if (item.Selected)
{
map += "','" + item.Value;
}
}
if (map != "") map = map.Substring(2, map.Length - 2) + "'";
else coa = "''";
cmd.Parameters.Add("@MAP", SqlDbType.VarChar).Value = map;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
da.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
gvMapping.DataSource = ds;
gvMapping.DataBind();
lblGLDeptData.ForeColor = System.Drawing.Color.Black;
lblGLDeptData.Text = " " + ds.Tables[0].Rows.Count + " Cost Center/Funds are Mapped to this Department.";
}
else
{
gvMapping.DataSource = ds;
gvMapping.DataBind();
lblGLDeptData.ForeColor = System.Drawing.Color.Black;
lblGLDeptData.Text = " No Currently Mapped Cost Centers.";
}
}
catch (Exception ex)
{
lblGLDeptData.ForeColor = System.Drawing.Color.Red;
lblGLDeptData.Text = ex.Message;
}
finally
{
myconn.Close();
myconn.Dispose();
}
我的选择行语句
protected void gvSelect(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//e.Row.Cells[0].Style["display"] = "none";
e.Row.ToolTip = "Click to select row";
e.Row.Attributes["onclick"] = this.Page.ClientScript.GetPostBackClientHyperlink(this.gvMapping, "Select$" + e.Row.RowIndex);
}
}
和我的删除声明
protected void delSysGLDepts(object sender, EventArgs e)
{
if (cbsys.Checked && !cbgl.Checked)
{
GridViewRow row = gvMapping.SelectedRow;
SqlConnection myconn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Rollup2ConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = myconn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "USP_DELETE_SYS_ROW";
cmd.Parameters.Add("@SYSID", SqlDbType.Int).Value = row.Cells[1].Text;
myconn.Open();
object count = cmd.ExecuteNonQuery();
myconn.Close();
myconn.Dispose();
getSysDepts();
答案 0 :(得分:1)
适合我:
void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onContextMenu ", ClientScript.GetPostBackEventReference(GridView1, "Select$" + e.Row.RowIndex.ToString()) + "; return false;");
}
}
protected override void Render(HtmlTextWriter writer)
{
for (int index = 0; index < GridView1.Rows.Count; index++)
{
ClientScript.RegisterForEventValidation(GridView1.UniqueID, "Select$" + index.ToString());
}
base.Render(writer);
}