在Gridview中找到按钮,然后从codeehind(c#)中单击它

Find Button inside a Gridview and click it from codebehind(c#)

本文关键字:codeehind 单击 然后 Gridview 按钮      更新时间:2023-09-26

我需要从codeehind中单击网格视图中的一个按钮。我认为最好的方法是在codebehind中创建一个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);

打开灯箱时,将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);
            }
    }

代码隐藏:

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,它是一个很棒的工具。g/l。