简体   繁体   English

GridView中的LinkBut​​ton动态

[英]LinkButton in GridView dynamically

I am binding a grid with DataTable, there are two columns which I am using, and the result in GridView1 is is, 我将一个网格与DataTable绑定在一起,正在使用两列,而GridView1中的结果是,

HostelName | HostelCode
  Alpha    |     1
  Bravo    |     2
  Charlie  |     3

Now I want this HostelCode as a LinkButton for all the records which are in database, so that I can do further actions while clicking LinkButton. 现在,我希望将此HostelCode用作数据库中所有记录的LinkBut​​ton,以便在单击LinkBut​​ton时可以做进一步的操作。 Any help ?? 有帮助吗??

I am using this code, but its not working, 我正在使用此代码,但无法正常工作,

            for (int i = 0; i < dt.Rows.Count; i++)
        {
            LinkButton lb = new LinkButton();
            lb = (LinkButton)GridView1.SelectedRow.FindControl("lbtnSelect");
            lb.Text = dt.Rows[1].ToString();
        }

lbtnSelect is the ID of my linkbutton. lbtnSelect是我的链接按钮的ID。

You can use link button in template field of gridview and Eval function to bind value in linkbutton in aspx page. 您可以在gridview的模板字段中使用链接按钮,并使用Eval函数在aspx页面的linkbutton中绑定值。

<asp:GridView runat="server" ID="gvrecords" CssClass="Gridview" DataKeyNames="HostelCode"
            AutoGenerateColumns="false" HeaderStyle-BackColor="#7779AF" HeaderStyle-ForeColor="White"
            OnRowDataBound="gvrecords_RowDataBound">
            <Columns>
                <asp:BoundField DataField="HostelName" HeaderText="Hostel Name" />
                <asp:TemplateField HeaderText="Hostel Code">
                    <ItemTemplate>
                        <asp:LinkButton ID="lnkbtn" runat="server" OnClick="lnkbtn_Click" Text='<%#Eval("HostelCode")'></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

ASPX CODE ASPX代码

<asp:GridView runat="server" ID="gvrecords" CssClass="Gridview" DataKeyNames="HostelCode"
            AutoGenerateColumns="false" HeaderStyle-BackColor="#7779AF" HeaderStyle-ForeColor="White"
            OnRowDataBound="gvrecords_RowDataBound">
            <Columns>
                <asp:BoundField DataField="HostelName" HeaderText="Hostel Name" />
                <asp:TemplateField HeaderText="Hostel Code">
                    <ItemTemplate>
                        <asp:LinkButton ID="lnkbtn" runat="server" OnClick="lnkbtn_Click"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

CS CODE CS代码

public partial class Tests : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindHostelDetails();
        }
    }
    protected void BindHostelDetails()
    {
        gvrecords.DataSource = DBData();
        gvrecords.DataBind();
    }
    protected void gvrecords_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            string HostelCode = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "HostelCode"));
            LinkButton lnkbtnresult = (LinkButton)e.Row.FindControl("lnkbtn");
            lnkbtnresult.Text = HostelCode;
        }
    }
    protected void lnkbtn_Click(object sender, EventArgs e) 
    {

        LinkButton lnkbtn = sender as LinkButton;
        GridViewRow gvrow = lnkbtn.NamingContainer as GridViewRow;
        int hostelcode = Convert.ToInt32(gvrecords.DataKeys[gvrow.RowIndex].Value.ToString());
        string HostelName = gvrow.Cells[0].Text;    
        Response.Write("<script> alert('" + "Hostel Name :"+ HostelName +" Hostel Code :"+ hostelcode + "'); </script>");
    }
    List<DTest> DBData()
    {
        List<DTest> _Dt = new List<DTest>();
        _Dt.Add(new DTest { HostelName = "Alpha", HostelCode = "1" });
        _Dt.Add(new DTest { HostelName = "Bravo", HostelCode = "2" });
        _Dt.Add(new DTest { HostelName = "Charlie", HostelCode = "3" });
        return _Dt;
    }
}
public class DTest
{
    public string HostelName { get; set; }
    public string HostelCode { get; set; }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM