佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 816|回复: 16

[asp.net]datagrid hyperlinkcolumn怎样可以拿到别个column的data?

[复制链接]
发表于 26-11-2006 03:01 AM | 显示全部楼层 |阅读模式



请问一下,如果我在out column那边click, 我可以拿到department column的text麽?
由于,我的in和out的column的数字是一直在变的。所以,我用Request.QueryString拿到的数字,我也不知道是哪个部门的。
我需要在user click out column时,filter去department和out status。

例如,我click 21,我拿到fm。

我想过找index, 但是找不到相关的资料。希望那位大大可以帮忙。

[ 本帖最后由 cyang 于 26-11-2006 03:06 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 26-11-2006 11:24 PM | 显示全部楼层
hyperlinkcolumn 只可以用一个 parameter, 要用多个是可以的, 但比较麻烦, 你可以选择用 template column.

http://www.experts-exchange.com/ ... NET/Q_21049587.html
回复

使用道具 举报

 楼主| 发表于 1-12-2006 10:28 PM | 显示全部楼层
老师,这个网站要付费的。
如果我只是要一个而已,但是不是一样的column的data。

好像我click在179,我拿到的data是FM, 我click 21 也是拿到FM。

请问可以做到这个麽?

[ 本帖最后由 cyang 于 2-12-2006 03:53 AM 编辑 ]
回复

使用道具 举报

发表于 2-12-2006 01:55 PM | 显示全部楼层
原帖由 cyang 于 1-12-2006 10:28 PM 发表
老师,这个网站要付费的。
如果我只是要一个而已,但是不是一样的column的data。

好像我click在179,我拿到的data是FM, 我click 21 也是拿到FM。

请问可以做到这个麽?


看清楚... 这个网站不需要付费也能看.
要做到那样的话, 我通常用最简单的方法, 也就是自己写 code 产生出 datagrid.
然后在那 column 里放上我所需要的 link 和 parameters.

至于如何产生 datagrid 的 column, 看这里:
http://www.codeproject.com/useri ... emplate_columns.asp
回复

使用道具 举报

 楼主| 发表于 5-12-2006 08:07 AM | 显示全部楼层
原帖由 goatstudio 于 2-12-2006 01:55 PM 发表
看清楚... 这个网站不需要付费也能看.
要做到那样的话, 我通常用最简单的方法, 也就是自己写 code 产生出 datagrid.
然后在那 column 里放上我所需要的 link 和 parameters.

至于如何产生 datagrid 的 column, 看这里:
http://www.codeproject.com/useri ... emplate_columns.asp

对不起,我真的找不到哪里可以看到solution。
我每次来这个网站,一按“view solution”,他就写“You Need to Subscribe to View This Solution ”, 我尝试不要填credit card来create account, 但是他不给。

可以教我怎样拿别个column的parameters麽? 我最大的难处就是这里。可是偏偏就是在网络找不到相关的资料(可能自己的keyword错), 或者可以教我keyword, 然后我自己再找。 我试过找很多keyword了,但是都找不到我要的资料。

Private Sub createtable()
        Dim DepartColumn As New HyperLinkColumn
        Dim InColumn As New HyperLinkColumn
        Dim OutColumn As New HyperLinkColumn
        'Dim InColumn As New BoundColumn
        'Dim OutColumn As New BoundColumn
        Dim TotalColumn As New BoundColumn
        Dim inCol As New BoundColumn
        Dim outCol As New BoundColumn


        DepartColumn = New HyperLinkColumn
        DepartColumn.DataTextField = "Department"
        DepartColumn.DataTextFormatString = ""
        DepartColumn.HeaderText = "Department"
        DepartColumn.DataNavigateUrlField = "Department"
        DepartColumn.DataNavigateUrlFormatString = "detail.aspx?departID={0}"
        DepartColumn.NavigateUrl = "detail.aspx"
        'DepartColumn.Target = "Depart"
        'DepartColumn.SortExpression() = "department"
        DataGrid1.Columns.Add(DepartColumn)


        InColumn = New HyperLinkColumn
        InColumn.DataTextField = "In"
        InColumn.DataTextFormatString = ""
        InColumn.HeaderText = "In"
        InColumn.DataNavigateUrlField = "In"
        InColumn.DataNavigateUrlFormatString = "detail.aspx?inID={0}"
        InColumn.NavigateUrl = "detail.aspx"
        ''InColumn.SortExpression = "In"
        ''InColumn.Target = "In"
        DataGrid1.Columns.Add(InColumn)

        OutColumn = New HyperLinkColumn
        OutColumn.DataTextField = "Out"
        OutColumn.DataTextFormatString = ""
        OutColumn.HeaderText = "Out"
        OutColumn.DataNavigateUrlField = "Out"
        OutColumn.DataNavigateUrlFormatString = "detail.aspx?outID={0}"
        OutColumn.NavigateUrl = "detail.aspx"
        OutColumn.Text = "test123"
        ''OutColumn.SortExpression = "Out"
        ''OutColumn.Target = "Out"
        DataGrid1.Columns.Add(OutColumn)

        TotalColumn = New BoundColumn
        TotalColumn.DataField = "Total"    ' Data Field Name(that is present in Query)
        TotalColumn.DataFormatString = ""     ' You May Specify the format of the Column
        TotalColumn.HeaderText = "Total"
        'TotalColumn.SortExpression = "Total"
        DataGrid1.Columns.Add(TotalColumn)  ' Adding the Column to Datagrid

        inCol = New BoundColumn
        inCol.DataField = "In"    ' Data Field Name(that is present in Query)
        inCol.DataFormatString = ""     ' You May Specify the format of the Column
        DataGrid1.Columns.Add(inCol)
        inCol.Visible = False


        outCol = New BoundColumn
        outCol.DataField = "Out"    ' Data Field Name(that is present in Query)
        outCol.DataFormatString = ""     ' You May Specify the format of the Column
        DataGrid1.Columns.Add(outCol)
        outCol.Visible = False


谢谢你的帮忙。
回复

使用道具 举报

 楼主| 发表于 5-12-2006 08:18 AM | 显示全部楼层
<TemplateColumn>
    <ItemTemplate>
       <asp:HyperLink Runat="server" NavigateUrl='<%# _
          "Details.aspx?EmployeeID=" & Container.DataItem("ID") & _
          "&EmployeeName=" & Container.DataItem("FirstName") %>' />
    </ItemTemplate>
</TemplateColumn>


Instead of doing the string concatenation yourself you can use the BuildUrlWithQueryString function, which must be declared with Public/Protected visibility in the code-behind, as follows:

<TemplateColumn>
    <ItemTemplate>
      <asp:HyperLink Runat="server" NavigateUrl='<%# _
         BuildUrlWithQueryString("Details.aspx", _
         "EmployeeID", Container.DataItem("ID"),
         "EmployeeName", Container.DataItem("FirstName")) %>' />
   </ItemTemplate>
</TemplateColumn>

这个可以麽?我尝试用container。dataitem, 但是不成功。
回复

使用道具 举报

Follow Us
发表于 5-12-2006 11:56 AM | 显示全部楼层
借楼请问下。。template column 该怎样在runtime时 remove 掉?
回复

使用道具 举报

发表于 5-12-2006 01:32 PM | 显示全部楼层
原帖由 tensaix2j 于 5-12-2006 11:56 AM 发表
借楼请问下。。template column 该怎样在runtime时 remove 掉?


你的runtime的意思是???
回复

使用道具 举报


ADVERTISEMENT

发表于 5-12-2006 02:04 PM | 显示全部楼层
执行的时候。。,.........
回复

使用道具 举报

发表于 5-12-2006 02:19 PM | 显示全部楼层
你只是要把整个COLUMN隐藏的话,
在ITEMCREATED的时候用
dgUser.Columns[index].Remove();
回复

使用道具 举报

发表于 5-12-2006 02:56 PM | 显示全部楼层
是 DataGrid1.Columns.RemoveAt(0)



不是隐藏。。.因为我没那个column。所以连databind都不能。
回复

使用道具 举报

发表于 5-12-2006 03:05 PM | 显示全部楼层
原帖由 little_orc 于 5-12-2006 02:19 PM 发表
你只是要把整个COLUMN隐藏的话,
在ITEMCREATED的时候用
dgUser.Columns.Remove();

可以了。 谢谢
回复

使用道具 举报

发表于 10-12-2006 01:49 AM | 显示全部楼层
原帖由 cyang 于 5-12-2006 08:07 AM 发表

对不起,我真的找不到哪里可以看到solution。
我每次来这个网站,一按“view solution”,他就写“You Need to Subscribe to View This Solution ”, 我尝试不要填credit card来create account, 但是他不给。 ...


这是你 create datagarid 的方式, 你如何从资料库选择资料出来? 放在 DataView 还是 DataTable? 可以让我看看这段 code 你是怎么写的吗?
回复

使用道具 举报

发表于 10-12-2006 02:00 AM | 显示全部楼层
如果我是你, 我会这样做 (C#):

先把你的 DataGrid, 全部设为 BoundColumn. 把 HyperLinkColumn 全部拿掉.

DataTable DataResult = new DataTable();
DataResult.Columns.Add (new DataColumn ("Department", typeof(string)));
DataResult.Columns.Add (new DataColumn ("OutStatus", typeof(int)));
...
...
DataResult.Columns.Add (new DataColumn ("Total", typeof(int)));

for (int x = 0; x < AnyDataSource.Count; x++) {

  DataRow ObjRow = DataResult.NewRow();
  ObjRow["Department"] = ResultHeaders[x].InternalID;
  ObjRow["OutStatus"] = "<a href=somelink.aspx?id=" + AnyDataSource[x].col1 + "&id2=" + AnyDataSource[x].col2 + "' >" + AnyDataSource[x].col3 + "</a>";
  
  ...
  ...

  DataResult.Rows.Add (ObjRow);
}

DataGrid.DataSource = DataResult;
DataGrid.DataBind();


用以上的方法... 你的 datagrid 的 link 要多少个 parameters 都可以.
回复

使用道具 举报

 楼主| 发表于 19-12-2006 07:47 AM | 显示全部楼层
原帖由 goatstudio 于 10-12-2006 01:49 AM 发表


这是你 create datagarid 的方式, 你如何从资料库选择资料出来? 放在 DataView 还是 DataTable? 可以让我看看这段 code 你是怎么写的吗?

对不起,这么迟回复你。 你帮我,我都感激万分了,你要看什么我都给你看。


    Private Sub PopulateData()
        
        Dim sda As SqlDataAdapter
        Dim strSQL As String
        Dim strCon As String
        Dim Tab As New DataTable




        'strSQL = "SELECT emp_dept Department, sum (case status when 'IN' then 1 else 0 end) as Count_In, sum (case status when 'OUT' then 1 else 0 end) as Count_Out, sum (1) Total FROM EVACUATION_LIST group by emp_dept order by emp_dept"
        strSQL = Session("sql"
        strCon = "server=S07;database=SICC;uid=ip;pwd=reread;"

        sda = New SqlDataAdapter(strSQL, strCon)
        sda.Fill(Tab)

        DataGrid1.DataSource = Tab
        DataGrid1.DataBind()



    End Sub
回复

使用道具 举报

 楼主| 发表于 19-12-2006 07:54 AM | 显示全部楼层
原帖由 goatstudio 于 10-12-2006 02:00 AM 发表
如果我是你, 我会这样做 (C#):

先把你的 DataGrid, 全部设为 BoundColumn. 把 HyperLinkColumn 全部拿掉.

DataTable DataResult = new DataTable();
DataResult.Columns.Add (new DataColumn ("Depar ...

请问ResultHeaders是一个method么? 可以看看他的coding么?
我上网找不到相关的资料。
谢谢
回复

使用道具 举报


ADVERTISEMENT

发表于 21-12-2006 09:42 AM | 显示全部楼层
原帖由 cyang 于 19-12-2006 07:54 AM 发表

请问ResultHeaders是一个method么? 可以看看他的coding么?
我上网找不到相关的资料。
谢谢



忘了说明, ResultHeaders 是我自己的 class, 一个 collection class, 里面是储存选择出来的资料. 这里你可以用 DataTable 来代替.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 14-11-2024 05:08 AM , Processed in 0.120338 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表