Проблема с источником данных и gridview - PullRequest
1 голос
/ 04 июля 2011

Я поставил это как источник данных в моем gridView

var source = from p in allComments
         select new {p.Img, p.Name, p.Comment};
          GridView1.DataSource = source;
          GridView1.DataBind();

и я получаю это:

The DataSourceID of 'GridView1' must be the ID of a control of type IDataSource. 

Элемент управления с идентификатором 'SqlDataSource1' не найден.

Моя разметка Gridview:

     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
        style="z-index: 1; left: 317px; top: 374px; position: absolute; height: 597px; width: 666px" 
       BackColor="#CCCCCC" BorderColor="#999999" 
        BorderWidth="0px" CellPadding="4" CellSpacing="2" 
        DataSourceID="SqlDataSource1" ForeColor="Black" AllowPaging="True" 
        onrowdatabound="GridView1_RowDataBound">

 <Columns>
      <asp:TemplateField HeaderText="#">
                        <HeaderStyle Width="500px" />
                         <ItemStyle Width="500px" />
                        <ItemTemplate>
                            <asp:Label ID="lblMessage" runat="server"  Text='<%# Bind("Comment") %>'></asp:Label>
                        </ItemTemplate>
       </asp:TemplateField>

           <asp:TemplateField HeaderText="#">
                        <HeaderStyle Width="100px" />
                          <ItemStyle Width="100px" />
                        <ItemTemplate>
                            <asp:Image ID="imgName" runat="server"  imageUrl='<%# Bind("Img") %>'></asp:Image><br />
                            <asp:Hyperlink ID="hyperLink" runat="server"  Text='<%# Bind("Name") %>' ></asp:Hyperlink>
                        </ItemTemplate>
       </asp:TemplateField>
   </Columns>

      </asp:GridView>

Ответы [ 3 ]

2 голосов
/ 04 июля 2011

Удалите DataSourceID="SqlDataSource1" из Gridview, так как вы устанавливаете источник данных в коде позади ..

var source = from p in allComments
select new {p.Img, p.Name, p.Comment};
GridView1.DataSource = source;
GridView1.DataBind();

Вы можете назначить DataSourceID or DataSource, но не можете сделать оба.

Редактировать: После ваших комментариев у вас возникла проблема в Пейджинге, для обработки пейджинга вам необходимо снова связать данные.

 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    var source = from p in allComments
                 select new { p.Img, p.Name, p.Comment };
    GridView1.DataSource = source;
    GridView1.DataBind();
}
0 голосов
/ 04 июля 2011

Удалить DataSourceID="SqlDataSource1"

0 голосов
/ 04 июля 2011

У вас есть атрибут DataSourceID="SqlDataSource1", в сообщении об ошибке указывается, что в вашем коде нет SqlDataSource с идентификатором SqlDataSource1.

Поэтому вам необходимо удалить этот атрибут по порядкучтобы связать его из-за кода.

Ваше деклярирование Grid-View должно выглядеть так:

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    style="z-index: 1; left: 317px; top: 374px; position: absolute; height: 597px; width: 666px" 
    BackColor="#CCCCCC" BorderColor="#999999" 
    BorderWidth="0px" 
    CellPadding="4" CellSpacing="2" 
    ForeColor="Black" AllowPaging="True" 
    onrowdatabound="GridView1_RowDataBound">

Теперь вы можете связать GridView без этой проблемы, вы можете иметь только одиних установить.Либо вы привязываете код, используя атрибут DataSource.Или вы указываете Атрибут DataSourceId.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...