1

次のコードがあります。グリッドビューで境界フィールドを定義しませんでした。代わりに、aspx.csファイルのSQLクエリを使用してデータを取得しています。各列の幅を0、1、2に調整することはできますか?調べる方法はありますか?私は多くの方法を試しましたが、それでも機能しません。助けてください!

<asp:GridView ID="surgicalGridView" runat="server"
    CaptionAlign="Top" HorizontalAlign="Justify" 
    DataKeyNames="id" onselectedindexchanged="surgicalGridView_SelectedIndexChanged"
    ToolTip="Excel File Download Tool" CellPadding="4" ForeColor="#333333" 
    GridLines="None" Width="854px">

     <RowStyle BackColor="#E3EAEB" />
       <Columns>
       <asp:CommandField ShowSelectButton="True" SelectText="Download" 
               ControlStyle-ForeColor="Blue">
<ControlStyle ForeColor="Blue"></ControlStyle>
           </asp:CommandField>
       </Columns>
     <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
     <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
     <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
     <HeaderStyle   BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
     <EditRowStyle BackColor="#7C6F57" />
     <AlternatingRowStyle BackColor="White" />
        <SortedAscendingCellStyle BackColor="#F8FAFA" />
        <SortedAscendingHeaderStyle BackColor="#246B61" />
        <SortedDescendingCellStyle BackColor="#D4DFE1" />
        <SortedDescendingHeaderStyle BackColor="#15524A" />
    </asp:GridView>
    <br />
4

3 に答える 3

7

OnRowDataBoundのイベントでそれを行うことができますgridview

protected void surgicalGridView_RowDataBound(object o, GridViewRowEventArgs e)
{           
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
         e.Row.Cells[0].Width = new Unit("200px");
         e.Row.Cells[1].Width = new Unit("400px");
         // and so on
    } 
}

Gridviewこれをマークアップに追加します

<asp:GridView ...............................
        onrowdatabound="surgicalGridView_RowDataBound">    // just add this event and execute the above code
 </asp:GridView>
于 2013-03-24T14:14:39.327 に答える
0

table trグリッドはとしてレンダリングされるdtため、グリッドにcssクラスを使用できます。
そこで、列の幅を設定できます。
クラスでは、、などのように使用tdできますtd+tdtd+td+td

投稿
.NETGridviewテーマの例によると

これらのリンクをチェックしてください。

http://icant.co.uk/csstablegallery/index.php?css=69#r69

http://mattberseth2.com/demo/には、コードのダウンロードによるグリッドビューのカスタマイズが多数あります。

ページング

スライダーを使用したページング

並べ替えアイコンで並べ替え

さらにいくつかのテーマ

http://mattberseth2.com/demo/Default.aspx?Name=A+YUI+DataTable+Styled+GridView&Filter=All http://mattberseth.com/blog/2007/11/5_gridview_themes_based_on_goo.html

代替テキスト
(出典:mattberseth.com

于 2013-03-24T14:50:13.870 に答える
0

私の解決策は以下の通りです。2つの定義された列を持つグリッドがあり、残りは動的にバインドされます。(e.Row.Cells [0] .Width = new Unit( "200px");)で列を設定できない理由はわかりませんが、別の方法を見つけました。また、グリッドで並べ替えが有効になっているため、リンクボタンコードが有効になっています。

const int FirstControl = 0;
const int GriDefinedFieldsCount = 2;

protected void grd_RowDataBound(object sender, GridViewRowEventArgs e)
{
     if (e.Row.RowType == DataControlRowType.Header)
     {
         int col = 0;
         foreach (DataColumn dc in SiteManager.Reports.ReportData.Columns)
         {
             if (dc.ColumnName == "Notes")
             {
                 LinkButton lnk = (e.Row.Cells[col + GriDefinedFieldsCount].Controls[FirstControl] as LinkButton);
                 lnk.Width = Unit.Pixel(300);
             }
             col += 1;
         }
     }
于 2015-02-06T16:33:42.780 に答える