我在一个DataGrid里面定义了一个HyperLinkColumn列,连接到DataSourceEdit(编辑界面)
代码如下:

<asp:BoundColumn DataField="DS_Id" HeaderText="用户ID" Visible="false"></asp:BoundColumn>
<asp:HyperLinkColumn NavigateUrl="~/UI/DataSource/DataSourceEdit.aspx" Text="编辑"></asp:HyperLinkColumn>请问我在DataSourceEdit.aspx.cs里面怎么能够取到DS_Id,这个HyperLinkColumn 应该怎么写

解决方案 »

  1.   

    <asp:HyperLinkColumn NavigateUrl="~/UI/DataSource/DataSourceEdit.aspx?DS_Id=<%#Eval("DS_Id")%>" Text="编辑"></asp:HyperLinkColumn>
    Request.QueryString["DS_Id"]
      

  2.   

    2楼的兄弟
    这个DataGrid是在DataSourceList.aspx里面,
    在DataSourceEdit.aspx.cs能通过Request.QueryString["DS_Id"]取到的?
      

  3.   

    不对,提示说HyperLinkColumn上下文不支持执行代码块,我定义的是不是不对啊,有其他方法吗?
      

  4.   

       在前台页面
    <ItemTemplate>
       <asp:HyperLinkColumn CommandArgument='<%# Bind("DS_Id") %>'
                            ID="btnEditG" runat="server" CommandName="EditRow" AlternateText="编辑" OnClick="btnEditG_Click" />
                        </ItemTemplate>  在后台页面:
      protected void btnEditG_Click(object sender, ImageClickEventArgs e)
      {string id = ((HyperLinkColumn)sender).CommandArgument;}
      
      利用CommandArgument属性    在“编辑”按钮点击事件里面通过获取该属性值去id号。
      

  5.   

    如果我在里面这样写 <asp:HyperLinkColumn NavigateUrl="~/UI/DataSource/DataSourceEdit.aspx?DS_Id=1" Text="编辑"></asp:HyperLinkColumn>
    在后台同Request.QueryString["DS_Id"]是可以取到1的,现在是怎么把这个Id变成用户点击列的DS_Id,就是我在上面定义的 <asp:BoundColumn DataField="DS_Id" HeaderText="用户ID" Visible="false"></asp:BoundColumn>
      

  6.   

       这个不难啊,二楼的方式也行。
        用CommandArgument属性赋值,在编辑事件里((HyperLinkColumn)sender).CommandArgument都能获取到你所点击列的ID号
      

  7.   

    如果用2楼的方法:
    <asp:HyperLinkColumn  NavigateUrl="~/UI/DataSource/DataSourceEdit.aspx?DS_Id=<%#Eval("DS_Id")%>" Text="编辑"></asp:HyperLinkColumn>错误提示是:
    System.Web.UI.WebControls.DataGridColumnCollection”内不允许包含文字内容(“<asp:HyperLinkColumn  NavigateUrl="~/UI/DataSource/DataSourceEdit.aspx?DS_Id=”)。什么情况
      

  8.   

    <asp:HyperLinkColumn NavigateUrl="~/UI/DataSource/DataSourceEdit.aspx?DS_Id = {0}" DataNavigateUrlFields="DS_Id"  Text="编辑"></asp:HyperLinkColumn>
      这样试试呢
      

  9.   

      <ASP:HyperLinkFiled /> 里有个 DataNavigateUrlFields 属性,以上的方法是通过了实践的。
       至于HyperLinkColumn  你需要找一下类似的属性去处理。
      估计你点击链接出错可能是没有DataNavigateUrlFields 这个属性造成的。
      

  10.   

    现在我写的是<asp:HyperLinkColumn  NavigateUrl='~/UI/DataSource/DataSourceEdit.aspx?DS_Id=<%# Eval("DS_Id")%>'    Text="编辑"></asp:HyperLinkColumn>
    NavigateUrl=‘’写后貌似可以运行,但是在取DS_Id的时候,取到的是<%
    这又是什么情况
      

  11.   

    错误是什么
    14楼应该是可以取到DS_id的值。
      

  12.   

    二楼的方法可行的。
    <asp:HyperLinkColumn NavigateUrl='~/UI/DataSource/DataSourceEdit.aspx?DS_Id=<%# Eval("DS_Id")%>' Text="编辑"></asp:HyperLinkColumn>不行吗?
      

  13.   

    <asp:HyperLinkColumn NavigateUrl='<%#Eval("DS_Id")%>' Text="编辑"></asp:HyperLinkColumn>
    你直接这样看下能不能取到DS_Id的值,如果能取到再在前面加URL
      

  14.   

      那就是格式的问题了,我给你看一个格式:
      '<%#"MarketEvaluate.aspx?ProjectId="+ Eval("ProjectID")%>'
      

  15.   

    18楼,返回错误是仅对DataBinding事件对象提供数据绑定表达式支持
      

  16.   

      <asp:GridView ID="GridView1" runat="server">
            <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                <a href="DataSourceEdit.aspx?DS_Id=<%#Eval("DS_ID")%>">编辑</a>
                </ItemTemplate>
            </asp:TemplateField>
            </Columns>
            </asp:GridView>
    你在DataVIEW里面加一列模板页加一个连接不一定要用<asp:HyperLinkColumn>这个控件
      

  17.   

    成功了,是这么写的,谢谢大家帮忙啊
    <asp:HyperLinkColumn ataNavigateUrlFormatString='~/UI/DataSource/DataSourceEdit.aspx?DS_Id={0}'  DataNavigateUrlField="DS_Id" Text="编辑"></asp:HyperLinkColumn>