2

私のグリッドビューには、aspx デザイナーからバインドされたテンプレート フィールドがあります。私はそれにデータテーブルをバインドしています。これで、アクション ボタンがほとんどないテンプレート フィールドが最初の列になります。テンプレートフィールドの前にデータテーブル列を配置する方法はありますか?

GridView のデザイナーからのコード:

<asp:GridView ID="JobListGrid" runat="server" AutoGenerateColumns="false" >
<Columns>
   <asp:TemplateField HeaderText="Actions">
    <ItemTemplate>
      <div>
       <asp:ImageButton ID="View" CssClass="imgbutton" ToolTip="View Pdf" runat="server"
            CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' ImageUrl="~/Content/pdf.PNG"  CommandName="View" Width="36" Height="36" OnClientClick='<%# Eval("JobID", "OpenInNewWindow(\"{0}\").ToString()") %>' />
        </div>
     </ItemTemplate>
   </asp:TemplateField>
</Columns>
</asp:GridView>

CS コード:

JobListGrid.DataSource = dataTableObj;
JobListGrid.DataBind();

上記のコードは、次のようなグリッド ビュー ヘッダーを示しています。

TemplateField | Col1 | Col2 | Col3

Templatefield を最後にする必要があります。col1、col、col3 はデータテーブルから取得しています。

4

3 に答える 3

1

このように GridView を変更します。列を制御するにAutoGenerateColumnsは、無効にする必要があります。

<asp:GridView ID="JobListGrid" runat="server" AutoGenerateColumns="False"> 
                <Columns>
                    <asp:BoundField DataField="JobID" HeaderText="JobID" />
                    <asp:BoundField DataField="JobName" HeaderText="Name" />
                    <asp:TemplateField HeaderText="Actions">
                        <ItemTemplate>
                        <div>
                            <asp:ImageButton ID="View" CssClass="imgbutton" ToolTip="View Pdf" runat="server" CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' ImageUrl="~/Content/pdf.PNG"  CommandName="View" Width="36" Height="36" OnClientClick='<%# Eval("JobID", "OpenInNewWindow(\"{0}\").ToString()") %>' />
                       </div>
                       </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
</asp:GridView>
于 2013-03-29T15:39:20.033 に答える
0

データテーブルから取得する列ごとにテンプレート フィールドを使用する必要があります。<%#Bind("yourColumnName")%>for text プロパティを使用してテキストを表示するには、テンプレート フィールド内でラベルを使用します。そうすれば、列を任意の順序で並べることができます。グリッドビューにも設定autogenerate columns to false。何かのようなもの

<asp:GridView ID="JobListGrid" runat="server" AutoGenerateColumns="false" >
    <Columns>
 <asp:TemplateField HeaderText="myDataTableColumn1">
        <ItemTemplate>        
           <asp:Label ID="lblTest" runat="server"
             Text='<%# Bind("yourDataTableColumnName") %>'></asp:Label>
       <ItemTemplate>
  </asp:TemplateField>
  <asp:TemplateField HeaderText="Actions">
   <Columns>
           <asp:ImageButton ID="View" CssClass="imgbutton" ToolTip="View Pdf" runat="server"
                CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' ImageUrl="~/Content/pdf.PNG"  CommandName="View" Width="36" Height="36" OnClientClick='<%# Eval("JobID", "OpenInNewWindow(\"{0}\").ToString()") %>' />
            </div>
         </ItemTemplate>
       </asp:TemplateField>
    </Columns>
    </asp:GridView>
于 2013-03-29T16:53:48.290 に答える