怎么把sqldatasource里查询得的SqlDataReader绑定到gridview的特定列,现在的情况是SqlDataReader有a,b,c三列,gridview有5列,其中有a,b,c,还有两列d,e,问如何绑定?谢谢啦

解决方案 »

  1.   

    好,贴代码如下:
               <asp:GridView ID="gvFile" runat="server" Height="210px" Width="440px" 
                  CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333" 
                  GridLines="None" AllowPaging="True" AutoGenerateColumns="False">
                   <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
                   <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
                   <Columns>
                       <asp:BoundField DataField="name" HeaderText="名字" SortExpression="name" />
                       <asp:BoundField DataField="size" HeaderText="大小" SortExpression="size" />
                       <asp:BoundField DataField="createTime" HeaderText="创建时间" 
                          SortExpression="createTime" />
                       <asp:ButtonField ButtonType="Image" HeaderText="重命名" 
                          ImageUrl="~/img/webdisk_img/下/rename.gif" Text="重命名该文件(夹)" />
                       <asp:ButtonField Text="下载该文件" ButtonType="Image" HeaderText="下载" 
                          ImageUrl="~/img/webdisk_img/下/download.gif" />
                       <asp:ButtonField ButtonType="Image" HeaderText="删除" 
                          ImageUrl="~/img/webdisk_img/下/delete_one.gif" Text="删除此文件(夹)" />
                   </Columns>
                   <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
                   <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
                   <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
                   <AlternatingRowStyle BackColor="White" />
               </asp:GridView>
               <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                  ConnectionString="<%$ ConnectionStrings:SQLCONNECTIONSTRING %>" 
                  
                   SelectCommand="SELECT [name], [size], [createTime] FROM [directorys] WHERE ([parentID] = @parentID)">
                   <SelectParameters>
                       <asp:QueryStringParameter Name="parentID" QueryStringField="DiskRootID" 
                           Type="Int32"/>
                   </SelectParameters>
               </asp:SqlDataSource>
    --------------------------------------------------------------------------
    多出的列是ButtonField,用来执行动作的
      

  2.   

    SELECT [name], [size], [createTime] FROM [directorys] WHERE ([parentID] = @parentID)  你看你的select语句只查询了三个值 是不可能把这三个值全部插进去的。
      如果有必要 把你的d e 两列设为默认值 也许可以把页面做的好看些
      

  3.   

    SELECT [name], [size], [createTime] FROM [directorys] WHERE ([parentID] = @parentID)  你看你的select语句只查询了三个值 是不可能把这三个值全部插进去的。
      如果有必要 把你的d e 两列设为默认值 也许可以把页面做的好看些
      

  4.   

    我弄了一个例子,       <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataSourceID="SqlDataSource1">
               <Columns>
                   <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
                       ReadOnly="True" SortExpression="ID" />
                   <asp:BoundField DataField="loginName" HeaderText="loginName" 
                       SortExpression="loginName" />
                   <asp:TemplateField>
                       <ItemTemplate>
                           <asp:Button ID="Button4" runat="server" Text="Button" />
                       </ItemTemplate>
                   </asp:TemplateField>
                   <asp:TemplateField>
                       <ItemTemplate>
                           <asp:Button ID="Button5" runat="server" Text="Button" />
                       </ItemTemplate>
                   </asp:TemplateField>
               </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="Data Source=(local);Initial Catalog=test;User ID=test;Password=test" 
            ProviderName="System.Data.SqlClient" 
            SelectCommand="SELECT [ID], [loginName] FROM [admin]"></asp:SqlDataSource>可啊
    你检查数据库连接字符串,我刚试一下,数据库连接出错则出现了你说的错误
      

  5.   

    select语句只查询了三个值 ,就是要把这三个值全部插进去啊,插到a,b,c三列中去
    d,e是按钮要触发事件,不能删
      

  6.   

    数据库连接没出错,我想根据上一页传过来的querystringdiskrootid查询该目录下的文件(夹),不知是不是我第一开始只需把
    <asp:BoundField DataField="name" HeaderText="名字" SortExpression="name" />
    <asp:BoundField DataField="size" HeaderText="大小" SortExpression="size" />
    <asp:BoundField DataField="createTime" HeaderText="创建时间" SortExpression="createTime" /> 
    中的BoundField改掉,比如改成
    <asp:TemplateField HeaderText="名字">
    <ItemTemplate>
    <%#DataBinder.Eval(Container.DataItem,"name") %></a>
    </ItemTemplate>
    <ItemStyle HorizontalAlign="Left" />
    <HeaderStyle Width="40%" />
    </asp:TemplateField>

    <asp:TemplateField  HeaderText="大小">
    <ItemTemplate>
    <%# (int)DataBinder.Eval(Container.DataItem,"size")/1024 %>KB
    </ItemTemplate>
    <ItemStyle HorizontalAlign="Center" />
    <HeaderStyle Width="15%" HorizontalAlign="Center" />
    </asp:TemplateField>
    <asp:TemplateField  HeaderText="创建时间">
    <ItemTemplate>
    <%# DataBinder.Eval(Container.DataItem,"createTime") %>
    </ItemTemplate>
    <ItemStyle HorizontalAlign="Center" />
    <HeaderStyle Width="15%" HorizontalAlign="Center" />
    </asp:TemplateField>
    未知可否?