簡體   English   中英

在Gridview中查找按鈕,然后從代碼隱藏(c#)單擊它

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

我需要從背后的代碼中單擊位於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);

當您打開燈箱時,請將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,它是一個很棒的工具。 克/升。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM