2015-07-14 2 views
1

Я пытаюсь отключить текстовое поле, если значение текстового поля равно null, но я не знаю, где я делаю неправильно, следующее не работает, любезно проверяйте и делитесь своими предложение.Как найти значения Null из текстового поля Gridview [C#]

WebForm:

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
      onrowdatabound="GridView1_RowDataBound"> 
      <Columns> 
       <asp:TemplateField HeaderText="GROUP"> 
        <ItemTemplate> 
         <asp:TextBox ID="TextBox2" commandargument="Now_cmd" runat="server" 
      value='<%# Eval("now") %>'></asp:TextBox> 
<cc1:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="Textbox2"></cc1:CalendarExtender> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="ACTIVITY"> 
        <ItemTemplate> 
         <asp:TextBox ID="TextBox3" commandargument="after_cmd" value='<%# Eval("afteronehour") %>' runat="server" 
      ></asp:TextBox> 
      <cc1:CalendarExtender ID="CalendarExtender2" runat="server" TargetControlID="Textbox3"></cc1:CalendarExtender> 

        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 

CodeBehind:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     for (int i = 0; i < e.Row.Cells.Count; i++) 
     { 
      string value = e.Row.Cells[i].Text.ToString(); 

      if (e.Row.Cells[i].Text.ToString() == string.Empty) 
      { 

       e.Row.Cells[i].Enabled = false; 
      } 
     } 
    } 
} 

Мой вход:

2015-07-03 09:44:02.380  2015-07-04 09:44:02.380 
2015-07-03 09:4`4:53.360 2015-07-04 09:44:53.360 
2015-07-03 09:47:00.580  NULL 
2015-07-03 09:47:00.580  2015-07-04 09:44:53.360 

Поэтому мне нужно отключить флажок NULL значения

+0

Есть ли 'NullPointerException' вы видели? –

+0

Если 'e.Row.Cells [i] .Text' равно null, то' e.Row.Cells [i] .Text.ToString() 'должен вызывать исключение –

+0

Или' e.Row.Cells [i] .Text' может содержать '' null "' как строку –

ответ

0

Вы связывание TextBox с DataSource Столбцов не Cell так что вы должны искать текст в TextBox не клетки. Также вы можете использовать FindControl вместо прокрутки до GridView Строка.

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{  
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     TextBox tb1= (TextBox)e.Row.FindControl("TextBox2"); 

    if(String.IsNullOrEmpty(Convert.ToString(DataBinder.Eval(e.Row.DataItem, "now")))) 
     tb1.Enabled = false; 

     TextBox tb2= (TextBox)e.Row.FindControl("TextBox3"); 
     if(String.IsNullOrEmpty(Convert.ToString(DataBinder.Eval(e.Row.DataItem, "afteronehour")))) 
     tb2.Enabled = false; 
    } 
} 
+0

Adil, NullreferenceException наступает –

+0

Если FindControl возвращает null, это означает, что у вас нет элемента управления с данным идентификатором в текущей строке. Убедитесь, что вы указали правильный идентификатор – Adil

+0

Adil, пожалуйста, проверьте мой код сетки, у меня есть этот элемент управления, я не получил ошибку, если попытаюсь использовать if (e.Row.RowType == DataControlRowType.DataRow), но весь столбец отключен, Мне нужно отключить только конкретную ячейку, если значение текстового поля равно null –

0

Вы должны проверить для null и empty строки с IsNullOrEmpty() метод, который будет проверять, является ли строка null или empty.

if (string.IsNullOrEmpty(e.Row.Cells[i].Text)) 
{ 
    e.Row.Cells[i].Enabled = false; 
} 
0
for (int r = 0; r < GridView1.Rows.Count; r++) 
{ 
    TextBox tb1 = (TextBox)GridView1.Rows[r].FindControl("TextBox2"); 

    TextBox tb2 = (TextBox)GridView1.Rows[r].FindControl("TextBox3"); 

if(tb1.Text==null) 
{ 
tb1.Enabled=false; 
} 
else 
{ 
tb1.Enabled=true; 
} 
if(tb2.Text==null) 
{ 
tb2.Enabled=false; 
} 
else 
{ 
tb2.Enabled=true; 
} 

} 
+0

Проверьте этот код. –

Смежные вопросы