2013-12-06 4 views
1

Я хочу получить идентификатор текстового поля, как показано ниже, чтобы добавить валидатор, идентификатор клиента содержит сгенерированную строку, UniqueID тоже, но только идентификатор ничего не содержит, почему?Как получить идентификатор текстового поля редактирования в gridview

Protected Sub GridView1_RowDataBound(ByVal sender As GridView, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 

    'Manipulate only editing row. 
    If e.Row.RowType = DataControlRowType.DataRow Then 
     If sender.EditIndex = e.Row.RowIndex Then 

      'Search textbox and add validators. 
      For Each cell As TableCell In e.Row.Cells     
       If cell.Controls.Count = 1 AndAlso TypeOf (cell.Controls(0)) Is TextBox Then 
        Dim txt As TextBox = DirectCast(cell.Controls(0), System.Web.UI.WebControls.TextBox) 

        'txt.ID is nothing...why? 
        SetValidators(cell.Controls, txt.ID) 
       End If 
      Next 
     End If 
    End If 
End Sub 
+0

Зачем вы это делаете в коде? Вы можете сделать это в виде формы. \ –

+0

Для редактирования нужно около 20 целевых таблиц, поэтому я хочу сгенерировать автоматически. – Jumpei

+0

Вы уверены, что выполняете код в режиме обновления? Вы уверены, что присвоили ID TextBox ?? –

ответ

1

И наконец, I'v решил эту проблему, применив обходное решение ниже.

  Dim txt As TextBox = DirectCast(cell.Controls(0), System.Web.UI.WebControls.TextBox) 

      'The ID is generated by to refer ClientID. 
      Dim foo = txt.ClientID 

      'Therefore, already txt.ID is not nothing. 
      SetValidators(cell.Controls, txt.ID) 

Благодарим за сотрудничество.

1

Ну вот обходной путь, если применимо к вашему приложению,

Dim txt As TextBox = DirectCast(cell.Controls(0), System.Web.UI.WebControls.TextBox) 

       //'txt.ID is nothing...why? 
       // Here you can assign new ID to your control as per your logic 

        txt.ID = "newID"; 
        SetValidators(cell.Controls, txt.ID) 
+0

Спасибо. Но я уже пробовал это обходное решение, и все столбцы обновляются как null, если применяется ... – Jumpei

+0

@JumpeiTanaka Вы имеете в виду, что вы назначаете 'RequiredFieldValidators', он не работает. –

+0

Нет, я имею в виду, что введенные значения исчезают, и они обновляются как null. – Jumpei

1

Вы можете попробовать следующий код, чтобы назначить управление валидатор в GridView контроля. Я не уверен, что вы делаете с помощью функции SetValidators().

Protected Sub GridView1_RowDataBound(ByVal sender As GridView, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 

    'Manipulate only editing row. 
    If e.Row.RowType = DataControlRowType.DataRow Then 
     If sender.EditIndex = e.Row.RowIndex Then 

      'Search textbox and add validators. 
      For Each cell As TableCell In e.Row.Cells     
       If cell.Controls.Count = 1 AndAlso TypeOf (cell.Controls(0)) Is TextBox Then 
        Dim txt As TextBox = DirectCast(cell.Controls(0), System.Web.UI.WebControls.TextBox) 

        'txt.ID is nothing...why? 
        SetValidators(cell.Controls, txt.ClientID) 
       End If 
      Next 
     End If 
    End If 
End Sub 
+0

Могу ли я иметь кодовый блок для функции 'SetValidators()'? –

+0

Слишком долго показывать, но только добавление валидаторов. Я хочу установить txt.ID в 'RegularExpressionValidator.ControlToValidate'. – Jumpei

+0

как вы пробовали этот anwser? –

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