我在將一個新行添加了多個控件(如文本框)到GridView的標題中時遇到問題。當我...將新行添加到GridView的標題中
if (e.Row.RowType == DataControlRowType.Header)
{
GridViewRow r = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
TableCell tc = new TableCell();
添加到他們在頭的方法GridView_RowCreated ..他們總是被放入第一排,第二個不是。我該如何改變它?我希望將我創建的行放入第二個標題行。
我試圖自己做,首先,我將ShowHeader修改爲false,並以編程方式添加第一行和第二行,但這是錯誤的方式,特別是當網格沒有數據要顯示但需要顯示標題時。我發現這個討論similar discussion,但intellisence不知道重寫PrepareControlHierarchy。我試圖用Object瀏覽器搜索它,發現這是GridView的方法,但我無法將其插入並測試。也許有人知道更容易解決這個問題。 我需要一些幫助。
已更新!
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
CellPadding="4" DataKeyNames="username" DataSourceID="SqlDataSource1"
ForeColor="#333333" GridLines="None" onrowcreated="GridView1_RowCreated">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="username" SortExpression="username">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("username") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name" SortExpression="Name">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Surname" SortExpression="Surname">
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("Surname") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
修訂!!!! 是的,教授你是對的,在我的情況下,它是控制在HeaderTemplate中最簡單的方法。我忘了它。但我有一個小問題,我如何添加列的名稱而不添加額外的標籤?這裏是我的代碼:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
CellPadding="4" DataKeyNames="username" DataSourceID="SqlDataSource1"
ForeColor="#333333" GridLines="None" onrowcreated="GridView1_RowCreated">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField **HeaderText="username"** SortExpression="username">
<HeaderTemplate>
**<asp:Label ID="Label4" runat="server" Text="username"></asp:Label>**<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("username") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name" SortExpression="Name">
<HeaderTemplate>
<asp:Label ID="Label4" runat="server" Text="Name"></asp:Label><br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Surname" SortExpression="Surname">
<HeaderTemplate>
<asp:Label ID="Label4" runat="server" Text="Surname"></asp:Label><br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("Surname") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
我標記了粗體字符串。如果我沒有標籤離開(只需使用HeaderText =「用戶名」),它不會在標題欄中顯示任何名稱。只有當我添加標籤時,它才顯示我的名字。它有什麼問題?
你爲什麼不在裏面創建headertemplate標籤?你能展示一個需求的快照嗎? – naveen
我創建了,我也創建了一些編程控制。現在我有一個問題,我怎麼能改變headertemplate行的地方和我的程序創建的行? – mit
你可以發佈你的標題模板的HTML標記? – fnostro