2013-03-28 2 views
0

Я хочу изменить содержимое в grid view на textbox.
Вот часть моего кодадобавить текстовое поле в виде сетки

public class TextBoxTemplate : ITemplate 
{ 
    public void InstantiateIn(Control container) 
    { 
     TextBox txtBox = new TextBox(); 
     txtBox.ID = "txtBox"; 

     container.Controls.Add(txtBox); 
    } 
} 

// dtTeaching является источниковедение данных для просмотра сетки

foreach (DataColumn col in dtTeaching.Columns) 
{  
    if (col.ColumnName.Contains("Name")) 
    { 
     TemplateField tfName = new TemplateField(); 
     tfName.ItemTemplate = new TextBoxTemplate(); 
     tfName.HeaderText = "Programme Name"; 
     gvTeaching.Columns.Add(tfName); 
    } 
} 

gvTeaching.DataSource = dtTeaching; 
gvTeaching.DataBind(); 


for (int i = 0; i < gvTeaching.Rows.Count; i++) 
{ 
    TextBox k = (TextBox)gvTeaching.Rows[i].Cells[0].Controls[0]; 
    k.Text = "test"; 
} 

Но результат ничего будет отображаться в виде сетки.
No textbox Нет содержания, всего 3 пустых строки,

+0

Почему вы не используете asp-разметки? Требуется ли создавать программно? – mshsayem

ответ

1

Почему бы вам не использовать Template field.
Во время разработки, почему во время выполнения?

Вот пример поля шаблона

<asp:TemplateField HeaderText="FirstName" SortExpression="FirstName"> 
    <EditItemTemplate> 
    <asp:TextBox ID="TextBox1" runat="server" 
     Text='<%# Bind("FirstName") %>'></asp:TextBox> 
    </EditItemTemplate> 
    <ItemTemplate> 
    <asp:Label ID="Label1" runat="server" 
     Text='<%# Bind("FirstName") %>'></asp:Label> 
    <asp:Label ID="Label2" runat="server" 
     Text='<%# Bind("LastName") %>'></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 
1

Вы можете взять с собой:

TemplateField tfName = new TemplateField(); 
tfName.EditTemplate = new TextBoxTemplate(); 
tfName.HeaderText = "Programme Name"; 
gvTeaching.Columns.Add(tfName); 

Вы можете попробовать добавить EditTemplate для редактирования значения в GridView.

Или Вы можете просто добавить эти поля в GridView.
как:
......

<Columns> 
    <asp:TemplateField> 
     <ItemTemplate> 
     <asp:Label ID="lbl" runat="server" Text='<%#Bind("ColumnName") %>' /> 
     </ItemTemplate> 
     <EditTemplate> 
     <asp:TextBox ID="txt" runat="server" Text='<%#Bind("ColumnName")%>' /> 
     </EditTemplate> 
    </asp:TemplateField> 
</Columns> 

Когда сетка будет отображаться на странице данных будут помещены в этикетки и при редактировании этой строки будет отображаться в TextBox.

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