2012-10-19 102 views
0

對於gridview中「startdate」列之一,如果用戶具有正確的權限,我想添加一個編輯圖標以打開允許用戶編輯的日曆日期。將鏈接圖像添加到列單元格中的GridView單元格AFTER單元格文本

我有以下代碼將圖像添加到列中,但它取代日期而不是在日期之後附加圖像。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 

    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if (System.Web.Security.Roles.IsUserInRole(Security.GetUserName(true, true), "UpdateStartDate")) 
     { 
      HyperLink hl = new HyperLink(); 
      // hl.Text = e.Row.Cells[6].Text; 
      hl.ImageUrl = "../images/pencil.gif"; 

      e.Row.Cells[6].Controls.Add(hl); 
     } 
    } 
} 

GridView的列

<asp:BoundField HeaderText="Start Date" DataField="start_dt" DataFormatString="{0:d}" SortExpression="start_dt" ReadOnly="true" /> 
+0

工作的知名度事件....如果用戶沒有權限編輯,那麼不顯示鏈接或禁用那個或其他任何你想要的,你可以在那個地方做 – rahularyansharma

+1

或者你也可以檢查這個鏈接也使用條件聲明在網格視圖http://stackoverflow.com/questions/1461302/conditionally-hide-commandfield-or-buttonfield-in-gridview – rahularyansharma

+0

http://stackoverflow.com/a/1461321/779158 – rahularyansharma

回答

2

在我看來,最好使用相反的方法:不顯示編輯鏈接,如果用戶有相應的權限,而是如果用戶沒有隱藏鏈接。使用日期值在文本框旁添加超鏈接控件,並在GridView1_RowDataBound方法中有條件地隱藏它。

+0

如果我這樣做,我將如何將圖像/鏈接添加到BoundField? – RememberME

+1

改爲使用TemplateField –

0

保護無效GridView1_RowDataBound(對象發件人,GridViewRowEventArgs E) {

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    if (System.Web.Security.Roles.IsUserInRole(Security.GetUserName(true, true), "UpdateStartDate")) 
    { 
     HyperLink hl = e.Row.find("h1") 
     // hl.Text = e.Row.Cells[6].Text; 
     hl.ImageUrl = "../images/pencil.gif"; 
     h1.visible=true; 

    } 
    else 
    { 
     HyperLink hl = e.Row.find("h1") 
     h1.visible=false; 
    } 
} 

}

我想你加入設計本身的超級鏈接和控制行數據綁定上的RowDataBound

相關問題