2012-03-12 45 views
6

tôi có giá trị bit (Đen) tôi muốn hiển thị trạng thái của nó trong chế độ xem lưới như hiển thị đúng, hàng "Có", nếu không hiển thị hàng "Không" , đây là mã của tôi, nhưng kết quả là không đúng, cuz hiển thị mã của tôi tất cả các hàng "Yes" nếu một giá trị là đúng, tôi muốn hiển thị mỗi trạng thái hàngĐầu ra có điều kiện trong ô dựa trên dữ liệu hàng trong sự kiện RowDataBound của GridView

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      DataTable dt = GetData(); 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       Boolean bitBlack = Convert.ToBoolean(dt.Rows[i]["Black"]); 
       if (bitBlack) 
       { 
        e.Row.Cells[7].Text = ("Yes"); 
       } 
       else 
       { 
        e.Row.Cells[7].Text = ("No"); 
       } 
      } 
     } 
    } 
+0

phương thức GetData() trả về là gì? – Seany84

Trả lời

9

Bạn luôn có thể sử dụng các hàng DataItem để có được những tiềm ẩn DataSource:

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DataRow row = ((DataRowView)e.Row.DataItem).Row; 
     bool isBlack = row.Field<bool>("Black"); 
     e.Row.Cells[7].Text = isBlack ? "Yes" : "No"; 
    } 
} 
+1

chính xác giải pháp, nó làm việc cảm ơn bạn Tim – Shehab

+0

Làm việc cho tôi nhưng trong một bối cảnh khác nhau nhẹ – wubblyjuggly

2

bạn cần phải lặp qua một DataTable dt trên mỗi RowDatabound?

Nếu bạn không cần điều này bạn có thể thử:

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 

       Boolean bitBlack = Convert.ToBoolean(e.Row.Cells[7].Text); 
       if (bitBlack) 
       { 
        e.Row.Cells[7].Text = "Yes"; 
       } 
       else 
       { 
        e.Row.Cells[7].Text = "No"; 
       } 

     } 
    } 
+0

Thanx Seany, nhưng tôi đã thử giải pháp của bạn và có lỗi "Không thể truyền đối tượng thuộc loại 'System.Web.UI.WebControls.DataControlFieldCell' để nhập 'System.IConvertible'" – Shehab

+0

Quên thêm thuộc tính .Text, vui lòng xem phiên bản sửa đổi của mã của tôi với thuộc tính .Text được thêm vào. – Seany84

2

Tôi không biết nguồn dữ liệu của bạn, nhưng nếu bạn có thể đánh giá nó, hãy làm điều gì đó như sau:

<asp:TemplateField HeaderText="Status"> 
      <ItemStyle CssClass="list" /> 
      <ItemTemplate> 
        <%# GetBit(Eval("BlackBit"))%> 
      </ItemTemplate> 
</asp:TemplateField> 

An d code-behind:

private string GetBit(object objBit) 
{ 
    if (Convert.ToInt32(objBit) == 1) 
    { 
     return "Yes"; 
    } 
    return "No"; 
} 
+0

Câu trả lời của Tim là làm việc hoàn hảo, thanx cho tất cả các bạn để được giúp đỡ – Shehab

Các vấn đề liên quan