2010-09-21 2 views
1

Я должен установить максимальную длину для связанного поля в редактируемом gridview. Для этого я использовал свойство строки формата данных, а также задал ApplyFormatInEditMode = "true", но он принимает недопустимый ввод. В gridview нет поля шаблона, он содержит только связанные поля. Я написал события OnRowEditing и RowUpdating. Строка dataformat - DataFormatString = "{0: N0}", но она также принимает вход "2352345234523454352345" и отображает ошибку сервера при обновлении в базе данных. Я хочу выделить максимальную длину для текстовых полей, генерируемых динамически при нажатии кнопки «Редактировать».Максимальная длина связанного поля в gridview в ASP.Net

+0

Я также попытался добавить свойство HtmlEncode как false. Но все равно не работает! – banupriya

ответ

3

Я сделал это, написав следующий код в событии Rowdatabound в gridview. В этом случае я неявно преобразовал ячейки gridview в динамически генерируемые текстовые поля и задал ширину и максимальную длину для них. В ключевом событии пресса я заблокировал алфавиты и другие специальные символы от ввода в текстовое поле. Теперь он отлично работает, как и ожидалось !. Код выглядит следующим образом:

if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     for (int i = 0; i < dgv.Columns.Count - 1; i++) 
     { 
      if ((e.Row.Cells[i].Controls.Count > 0) && (e.Row.Cells[i].Controls[0] is TextBox)) 
      { 
       ((TextBox)e.Row.Cells[i].Controls[0]).Width = 40; 
       ((TextBox)e.Row.Cells[i].Controls[0]).MaxLength = 5; 
      } 
     } 
    }    
    //To make the text box accept numbers, delete, backspace, numlock,dot only 
    e.Row.Attributes.Add("onkeypress", "javascript: var Key = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; return ((Key >= 48 && Key <= 57) || (Key == 110) || (Key == 190) || (Key == 8) || (Key == 46) || (Key == 144))"); 
2

DataFormatString не обрабатывает MaxLength. Попробуйте использовать DataBinder.Eval() внутри текстового поля и установите там MaxLength. Как следующее:

<asp:TemplateField HeaderText="My Text"> 
<ItemTemplate> 
<asp:TextBox ID="txtID" MaxLength="10" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "YOUR_BOUND_ITEM_NAME") %>'></asp:TextBox> 
</ItemTemplate> 
</asp:TemplateField> 

--EDIT--

asp:BoundField по своей природе отображения записей. Таким образом, вы не можете установить MaxLength.

Я должен установить максимальную длину для связанного поля в редактируемом gridview.

Вы можете захватить событие edit_button_click (или какое-либо событие), отображающее текстовое поле в сетке. Там вы можете установить MaxLength текстового поля.

Альтернативно, This example может помочь.

+0

Я не использовал поле шаблона, я использую связанные поля только в gridview! – banupriya

+0

banupriya

+0

Замените вышеуказанный фрагмент; он будет работать так же, как и «BoundField». –

2

Вы можете использовать Jquery против текстовых полей, которые уже приданы, при условии, присвоить класс CSS к ним.

$(".numericInputTextBox").each(function() { 
    $(this).attr("MaxLength", "9"); 
)}; 
Смежные вопросы