获取GridView中NavigateUrl中任何项的ID

时间:2014-03-05 09:10:23

标签: c# asp.net

您好我有这个gridview:

<asp:GridView ID="grd1" width="100%" AutoGenerateColumns="False"   runat="server" EnableModelValidation="True"  CellPadding="4" ForeColor="#333333" GridLines="None"  >
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    <Columns>
        <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
        <asp:HyperLinkField DataTextField="Plan Reference" HeaderText="Plan Reference" SortExpression="Plan Reference" NavigateUrl="https://www.yahoo.com?itemid="/>
    </Columns>
    <EditRowStyle BackColor="#999999" />
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" HorizontalAlign="Center"/>
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
</asp:GridView>

当我在计划参考栏上指明时,该网址会出现在窗口的左下角,如下所示:https://www.yahoo.com?itemid=

我想要在其上指示的行的id,显示在窗口左下角的url中,我该如何编码?

这是我的CS代码:

DataTable GetData()
{
    SPSite oSiteCollection = SPContext.Current.Site;
    SPWeb oWeb = oSiteCollection.OpenWeb();
    SPList oSpList = oWeb.Lists["Drill Plans"];
    SPListItemCollection oSpListItemCollection = oSpList.Items;
    DataTable dt = new DataTable();
    try
    {
        dt.Columns.Add("ID", typeof(int));
        dt.Columns.Add("Plan Reference", typeof(String));
        DataRow dataRow;


        foreach (SPListItem oSplistItem in oSpListItemCollection)
        {
            //DateTime date = DateTime.Now;
            //string currentDate = String.Format("{0:dddd, MMMM dd, yyyy}", date);
            dataRow = dt.Rows.Add();
            dataRow["ID"] = oSplistItem["ID"].ToString();
            dataRow["Plan Reference"] = oSplistItem["Plan Reference"].ToString();
        }
        return dt;
    }
    catch (Exception ex)
    {
        System.Diagnostics.Debug.WriteLine("Managers Approval" + ex.Message.ToString());
        return dt;
    }
}

请帮帮我。 我需要帮助重要的工作

1 个答案:

答案 0 :(得分:0)

要将绑定项的ID附加到网址,您可以使用Container.DataItem,如下所示:

<asp:HyperLinkField 
    DataTextField="Plan Reference" 
    HeaderText="Plan Reference" 
    SortExpression="Plan Reference" 
    NavigateUrl='https://www.yahoo.com?itemid=<%# Container.DataItem("ID") %>'/>

更多信息here

修改

为了使上述功能正常工作,您需要将GridView绑定到从方法GetData()返回的数据表中。在Page_Load方法中,您应该使用以下内容:

if(!IsPostback)
{
    grd1.DataSource = GetData();
    grd1.DataBind();
}

另一种方法是处理GridView的{​​{3}}事件并在其中设置NavigateUrl。为此,您需要为HyperLinkField分配一个ID(让我们称之为“链接”)。这是代码:

protected void OnGridViewRowDataBound(object sender, GridViewRowEventArgs e)
{
    var hyperLink = e.Row.FindControl("link") as HyperLinkField;
    if(hyperLink != null)
    {
        var row = e.Row.DataItem as DataRow;
        hyperlink.NavigateUrl = String.Format("https://www.yahoo.com?itemid={0}", row["ID"]);
    }
}

当然,不要忘记在标记中添加事件处理程序:

<asp:GridView ID="grd1" RowDataBound="OnGridViewRowDataBound" ..
</asp:GridView>