【问题标题】:LinkButton in GridView dynamicallyGridView中的LinkBut​​ton动态
【发布时间】:2014-03-27 08:01:02
【问题描述】:

我正在用 DataTable 绑定一个网格,我正在使用两列,GridView1 中的结果是,

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

现在我希望这个 HostelCode 作为数据库中所有记录的链接按钮,以便我可以在单击链接按钮时执行进一步的操作。 有什么帮助吗??

我正在使用此代码,但它不起作用,

            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 是我的链接按钮的 ID。

【问题讨论】:

  • 您遇到的错误是什么?
  • 你什么时候运行你展示的代码(for (int i ...)?
  • 对象引用未设置为对象的实例。这是我在 for 循环内的第二行得到@MuneebZulfiqar 的错误。
  • @Markus 我在填充 DataTable 之后并将其绑定到 GridView1 之前运行此代码。

标签: c# gridview linkbutton


【解决方案1】:

您可以使用gridview模板字段中的链接按钮和Eval函数来绑定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" Text='<%#Eval("HostelCode")'></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

【讨论】:

  • 这行得通,但现在我想获取我选择的 HostelCode 的值,因为我需要选择的值进行进一步处理。
  • 生成 GridView 的 RowCommand 事件,您可以在其中获取 Hostel 代码。
【解决方案2】:

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 代码

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; }
}

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多