<asp:datagrid id="MyDataGrid" runat="server" AutoGenerateColumns="False" HorizontalAlign="Center" CellSpacing="1" CellPadding="4" GridLines="Vertical"  PagerStyle-HorizontalAlign="Right" PagerStyle-Mode="NumericPages" AllowPaging="True" BorderStyle="Solid" Font-Names="Verdana" Width="100%" PageSize="12"><SelectedItemStyle Font-Bold="True" ForeColor="White"/>
<AlternatingItemStyle BackColor="#CCCCCC"></AlternatingItemStyle>
<HeaderStyle Font-Bold="True" HorizontalAlign="Center" ForeColor="White" BackColor="#999999"></HeaderStyle>
<FooterStyle BackColor="#CCCCCC"></FooterStyle> 
 <Columns>
   <asp:TemplateColumn HeaderText="选择" HeaderStyle-Width="5%">
            <HeaderStyle HorizontalAlign="Center" Width="50px"></HeaderStyle>
            <ItemTemplate>
              <asp:CheckBox ID="janChkExport" Runat="server" />
            </ItemTemplate>
            <EditItemTemplate>
              <asp:CheckBox ID="janChkExportON" Runat="server" Enabled="true" />
            </EditItemTemplate>
   </asp:TemplateColumn>  <asp:HyperLinkColumn HeaderText="姓名" Target=_blank DataNavigateUrlField="person_info_user_id" DataNavigateUrlFormatString="dataview.aspx?id={0}" DataTextField="person_info_xingming" HeaderStyle-Width="11%">
   </asp:HyperLinkColumn>
<asp:Button id="janSearchCom" runat="server" Font-Size="9"  Text="选中的id号"  OnClick="janSearchCom_Click"></asp:Button>-----------------------------------CheckBox一选中,在安下Button,就把这行HyperLinkColumn中的DataNavigateUrlField的值
放入数据库,怎么实现?
就是不知道如何获得datagrid中HyperLinkColumn的DataNavigateUrlField的值?大家帮帮忙!!

解决方案 »

  1.   

    我能不能在模版上DataField="person_info_user_id"?
      

  2.   

    既然是从数据库中取得值,那就可以:
    ((DataRowView)e.Item.DataItem).Row["person_info_user_id"].ToString()
      

  3.   

    to:gshope我从数据库中检索出n个值,
    每个值前有一个CheckBox,
    用户可以选择,
    之后安下Button
    这是时候你怎么从数据库在中取得值,
    你是不是说 在从新检索一遍数据库?那我也不知道检索的出的数据第几个是用户选择的???
      

  4.   

    1. 转化hyperlink column为template column
    2. 进入aspx页面代码,给hyperlink赋id,例如"hlk1"
    3.
    在dagagrid的itemcommand里:
    e.item.findcontrol("hlk1")就是这个hyperlink
      

  5.   

    你的BUTTON在datagrid的item里,还是位于datagrid之外呢?最好还是用模板列好一些,在模板里添加一个hyperlink控件,进行适当的数据绑定,如下:
    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:HyperLink id=HyperLink1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.muser") %>' NavigateUrl='<%# "WebForm1.aspx?mcount="+DataBinder.Eval(Container, "DataItem.mcount").ToString() %>'>
    </asp:HyperLink>
    </ItemTemplate>
    </asp:TemplateColumn>
    我这里是把button放到了外面,在它的click方法里,如下所写
    private void Button1_Click(object sender, System.EventArgs e)
    {
         foreach(DataGridItem dgi in this.DataGrid1.Items)
        {
    CheckBox cb=(CheckBox)dgi.FindControl("CheckBox1");
    if(cb.Checked)
    {
    HyperLink hl=(HyperLink)dgi.FindControl("HyperLink1");
    Response.Write(hl.Text);//把这里改成你要执行的操作就可以了。
    }
        }
    }
    其它的还请高手指点了,呵呵
      

  6.   

    当然也可用HyperLinkColumn,比如的第1列是HyperLinkColumn,第0列是checkbox,
    private void Button1_Click(object sender, System.EventArgs e)
    {
         foreach(DataGridItem dgi in this.DataGrid1.Items)
        {
    CheckBox cb=(CheckBox)dgi.FindControl("CheckBox1");
    if(cb.Checked)
    {
               System.Web.UI.WebControls.HyperLink temp=(HyperLink)dgi.Cells[1].Controls[0];
               Response.Write(temp.Text+"<br>");
               Response.Write(temp.NavigateUrl+"<br>");
              }
        }
    }因为以上两种方法,都最终只能得到一个hyperlink,因为HyperLinkColumn最终还是转化成了一个HyperLink,因为其中的NavigateUrl开始的都是固定的,也即和设置时的DataNavigateUrlFormatString属性有关,它们的区别都在最后的参数不同,因而这就转化为完全的字符串操作了,比如我上面的格式字符串为WebForm1.aspx?mcount={0},因而在得到hyperlink后
    string url=temp.NavigateUrl;
    string mymcount=url.Remove(0,"WebForm1.aspx?mcount=".Length);
    这个也就是你要得到的DataNavigateUrlField的值了,对不?
      

  7.   

    谢了tavor(龙双公子)你说的第2种不错,太谢了!!!