2015-10-13 52 views
0

我使用VB.NET顯示行的值ASP中繼/ GridView的

我得到一個數據表有以下的列

ID DESC Hyperlink COUNT 

計數或者是01

如果計數是0我需要做一個

NavigateUrl='<%#"~/Create.aspx?ID=" + Eval("ID")%>' Text="Create" 

在超鏈接列

我沒有對數據綁定事件做任何顯式的操作。 我正在填充轉發的方式是:

rptrTask.DataSource = PpltDefGrid(Trim(v)) 

在功能只在此刻

rptrTask.DataBind() 

能有人給我如何做到這一點的內嵌代碼得到一個SQL表?如果沒有任何想法,我怎麼能通過後面的代碼來做到這一點(有一個例子,請)?我已經嘗試了一些/ Container.data方法..但還沒有成功。非常感謝任何幫助。

+0

如果是1,該怎麼辦? – g2000

+0

它不顯示超鏈接..只需要顯示其餘的col數據然後.. – user2390536

+0

什麼是計數?你正在從數據庫中獲取它或它是在數據表/數據集 – Ansari

回答

0

我正在編輯我的答案,那麼在這種情況下,RowDataBound將是您的簡單選擇。

修改你的GridView是這樣的: -

<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound"> 

我已經加入"OnRowDataBound="GridView1_RowDataBound"

在.aspx頁面,您可以這樣寫hyperlink

<asp:TemplateField HeaderText="Count"> 
    <ItemTemplate> 
     <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="#" Text='<%#Eval("ID") %>'></asp:HyperLink> 
    </ItemTemplate> 
</asp:TemplateField> 

在.aspx。 vb頁面寫如下: -

Protected Sub GridView1_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 
     If e.Row.RowType = DataControlRowType.DataRow Then 
      Dim HyperLink1 As HyperLink = DirectCast(e.Row.FindControl("HyperLink1"), HyperLink) 
      If DataBinder.Eval(e.Row.DataItem, "COUNT") = "0" Then 
       HyperLink1.NavigateUrl = "~/Create.aspx?ID=" + DataBinder.Eval(e.Row.DataItem, "ID") 
      End If 
     End If 
    End Sub 

希望得到這個幫助。

+0

嗨,我現在看到你的問題關於計數的原因。計數是由填充中繼器的sql返回的值。所以儘管你給出的是正確的,但並不能滿足我對這個實例的要求。 計數保存在一個列中,並基於該值(0/1)我需要顯示該行的超鏈接。希望澄清疑問。 – user2390536

+0

@ user2390536我修改了我的答案,請現在檢查....... – Ansari

0

您可以在後面的代碼中使用gridview的RowDatBound()事件。

protected void rptrTask_RowDataBound(object sender, GridViewRowEventArgs e) { 
     if (e.Row.RowType == DataControlRowType.DataRow) { 
      HyperLink hl = (HyperLink)e.Row.FindControl("hyperlinkID"); 
      if(DataBinder.Eval(e.Row.DataItem, "COUNT") == "0") 
      { 
      hl.NavigateUrl = "~/Create.aspx?ID=" + DataBinder.Eval(e.Row.DataItem, "ID"); 
      } 
     } 
    } 
0

我將邏輯提取到變量(bShowURl)以提高可控性。另外還要進行檢查以確保超鏈接的存在。

Protected Sub yourGridview_RowDataBound(sender As Object, e As GridViewRowEventArgs) 

     If e.Row.RowType = DataControlRowType.DataRow Then 
      Dim currentDataItem As yourDataItemDataType = e.Row.DataItem 
      Dim bShowUrl = IIF(currentDataItem.ID = 0, True, False) 

      If bShowUrl Then 
       Dim hyperlink As HyperLink = CType(e.Row.FindControl("yourHyperlinkControlId"), HyperLink) 
       If hyperlink IsNot Nothing Then 
        hyperlink.NavigateUrl = "~/Create.aspx?ID=" + currentDataItem.ID.ToString() 
       End If 
      End If 
     End If 

End Sub