在Gridview中查找Button并从后面的代码中单击它(c#)

时间:2014-11-07 15:58:56

标签: javascript c# asp.net aspxgridview

我需要从代码隐藏中点击gridview内的按钮。我认为最好的方法是在代码隐藏中创建一个javascript函数,就像我在下面尝试的第二个解决方案。我将不胜感激任何帮助

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {

        if (e.CommandName == "Accepted")
        {

            int index = Convert.ToInt32(e.CommandArgument);

            GridViewRow row = GridView1.Rows[index];

       //find button

            Button btnEsc = (Button)row.FindControl("btnEsc");

       //here I would like to simulate a click on this button, so far no luck

        btnEsc.Click(); // this is wrong

         }
      }

我也试过这个,但它找不到按钮:我不知道如何在gridview中找到按钮

           System.Text.StringBuilder sbScript = new System.Text.StringBuilder("");
           sbScript.Append("document.getElementById('btnEsc').click();");
           ScriptManager.RegisterStartupScript(this, GetType(), "ClientScript", sbScript.ToString(), true);

2 个答案:

答案 0 :(得分:1)

打开灯箱时,将Id传递给隐藏字段。然后你可以稍后阅读。 ListView中的示例。

protected void lvProjectServices_ItemCreated(object sender, ListViewItemEventArgs e)
    {

            if (e.Item.DataItem != null)
            {
                Whatever data = (Whatever)e.Item.DataItem;

                PlaceHolder objPlc3 = (PlaceHolder)e.Item.FindControl("phEdit");

                LinkButton link3 = new LinkButton();
                link3.Text = "<i class=\"table-edit\"></i>";
                link3.ID = "lbEditServer" + data.Id.ToString();
                link3.CommandName = "Edit";
                link3.CommandArgument = data.Id.ToString();
                link3.Click += link_Click;
                objPlc3.Controls.Add(link3);

            }
        }


    void link_Click(object sender, EventArgs e)
    {

        LinkButton btn = (LinkButton)sender;

        int Id = int.Parse(btn.CommandArgument.ToString());

        txtProjectServiceId.Value = Id.ToString();

            ScriptManager scriptManager = ScriptManager.GetCurrent(Page);

            if (!scriptManager.IsClientScriptBlockRegistered("openSvcModal"))
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "openSvcModal", "$('select').select2(); $('#editProjectService').modal();", true);
            }
    }

答案 1 :(得分:0)

代码背后:

public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        btn.Text = "Refreshed";
        if (Request.Params["btnPressed"] != null && Request.Params["btnPressed"] == "true")
        {
            ScriptManager.RegisterStartupScript(Page, typeof(Page), "OpenWindow", string.Format("$('#{0}').click()", btn.ClientID), true);
        }
    }

    protected void btn_Click(object sender, EventArgs e)
    {

        btn.Text = "Not Refreshed";
        lbl.Text = "Not Refreshed";
        System.Threading.Thread.Sleep(1000);
        ////to refresh the page
        Page.Response.Redirect(HttpContext.Current.Request.Url.ToString()+"?btnPressed=true", true);
    }
}

在aspx页面中加载jquery:

<body>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <form id="form1" runat="server">
    <div>
    <asp:Button runat="server" ID="btn" OnClick="btn_Click" PostBackUrl="/WebForm1.aspx" />
        <asp:Label runat="server" ID="lbl"> </asp:Label>
    </div>
    </form>
</body>

你应该学习jquery,它是一个很棒的工具。克/升。