我在datagrid中有一个超链接列. 目前需要取得该列的值进行数据库处理.
如何取????
 d_Userlist.Items[i].Cells[1].Text.ToString()
 这个取出来是空值. 
 有什么好方法可以取的. 或是更本就不能获得该值.
 哪位指点一二.

解决方案 »

  1.   

    d_Userlist[i,1].ToString();
    //索引从0开始
      

  2.   

    我的第一列是模板列,第二列才是这个超链接列. 
    第一列是checkbox.我要根据checkbox的状态来处理数据.
    所以就用了   dg.items[] 这个来确定被选择了哪一行. cells 是 确定哪一列. 
    dg[i,0] 这个怎么来确定是哪一行被选择.
    我现在头都是昏了.完全没的头绪了.
    帮忙帮忙~!
      

  3.   

    在datagrid的mousup事件中添加如下代码.能取得选中行的信息.
    这是在winform中的例子.DataGrid.HitTestInfo hti;
    hti=youDataGrid.HitTest(e.X ,e.Y );
    switch(hti.Type)
    {
    case System.Windows.Forms.DataGrid.HitTestType.None:
    break;
    case System.Windows.Forms.DataGrid.HitTestType.Cell:
    this.youDataGrid.Select(hti.Row );
    strC=this.youDataGrid[hti.Row,0].ToString().Trim();
    strCode=this.youDataGrid[hti.Row,1].ToString().Trim();
    break;
    case System.Windows.Forms.DataGrid.HitTestType.ColumnHeader:
    break;
    case System.Windows.Forms.DataGrid.HitTestType.RowHeader:
    strC=this.youDataGrid[hti.Row,0].ToString().Trim();//0:为列idx
    strCode=this.youDataGrid[hti.Row,1].ToString().Trim();
    break;
    case System.Windows.Forms.DataGrid.HitTestType.ColumnResize:
    break;
    case System.Windows.Forms.DataGrid.HitTestType.RowResize:
    break;
    case System.Windows.Forms.DataGrid.HitTestType.Caption:
    break;
    case System.Windows.Forms.DataGrid.HitTestType.ParentRows:
    break;
    }
      

  4.   

    我这个是web上的,还有我是直接根据模板列中的checkbox的选择与否,来进行判断的.
    private void b_delete_Click(object sender, System.EventArgs e)
    {
    string del = "";
    for(int i = 0; i< d_Rolelist.Items.Count;i++)
    {
    CheckBox cb = (CheckBox)d_Rolelist.Items[i].FindControl("chkDelete");
    if(cb.Checked)
    {
    del +="'"+ d_Rolelist.Items[i].Cells[1].Text.ToString()+"'";
    del += ",";
    }
    }
    if(del != "")
    {
    del = del.Remove(del.Length-1,1);
    if(conn.myOleDbExcute("delete from t_Security_Role Where SRole in ("+del+")"))
    {
    BindGrid();
    }
    }
    else
    {
    BindGrid();
    }
    }这个是我的处理代码. 当超链接列是普通列,代码通过.执行无误. 改成超链接后,就取不了值,执行不了.
      

  5.   

    dataGrid1[dataGrid1.CurrentCell.RowNumber,dataGrid1.CurrentCell.ColumnNumber].ToString();
    //看看有类似这样的方法没?
      

  6.   

    没有这个方法.郁闷. 主管老是提一些很郁闷的问题.
    我在datagrid中专门设了一个查看的超链接列 ,结果他说不美观,硬要让id列成为超链接,说是方便. 
    唉,头发要抓完了,还不知道怎么弄.大哥大姐们帮帮忙吧.
      

  7.   

    楼主提的是webfrom还是winform的问题呢
      

  8.   

    超级连接列里的东西要转化成超级的(HyperLink)(dg.item[0].cells.control[0])大小写不怎么对 但思路是这样的
      

  9.   

    dg[i,0].ToString()这个应该可以呀;
      

  10.   

    用隐藏列这个办法属于投机取巧,始终不是一个正规的解决办法.
    dg[i,0].ToString() 这个 ,我这里无法使用. 请看我在5楼帖出的删除代码.
    现在主要是想能够比较正确的取的这个列的值.
    反正5:30结帖,接分的,能够说上一两句的都来说说.
      

  11.   

    <asp:DataGrid id="dg" DataKeyField="id">
      

  12.   

    <asp:TemplateColumn SortExpression="档案号" HeaderText="档案号">
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    <ItemTemplate>
    <asp:HyperLink id=HyperLink1 runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"档案号") %>' NavigateUrl='<%#"AdminArcFileList.aspx?ArcNum="+ DataBinder.Eval(Container.DataItem,"档案号") %>' target="ArcFile">
    </asp:HyperLink>
    <asp:LinkButton Visible=False id=LinkButton3 runat="server" CausesValidation="False" Text='<%# DataBinder.Eval(Container.DataItem,"档案号") %>'>
    </asp:LinkButton>
    </ItemTemplate> </asp:TemplateColumn>
      

  13.   

    if (e.Item.ItemIndex>0)
    {
    Response.Write(((HyperLink)e.Item.Cells[1].Controls[0]).Text+"<br>");
    }我假设第二列是超链接列,你在ItemDataBound中写上这一段看看效果