Я пытаюсь реплицировать привязку в моей разметке с чем-то программным. Кажется, я вынужден использовать набор данных для привязки вместо SqlDataSource, как показано в моей разметке. Кроме того, при использовании набора данных я неожиданно теряю пейджинг, сортировку и т. Д., И получаю ошибки, которые мне нужно обрабатывать вручную. Они обрабатывались автоматически до ??Связывание GridView с программным обеспечением SqlDataSource
Так вот мой разметки:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True"
CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333"
GridLines="None" AllowPaging="True" AllowSorting="True" Width="520px">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
SelectCommand="CustOrdersOrders" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter Direction="ReturnValue" Name="RETURN_VALUE" Type="Int32" />
<asp:ControlParameter ControlID="txtCustId" DefaultValue="AROUT"
Name="CustomerID" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
я заменил его с чем-то вроде этого:
SqlDataAdapter adapter = new SqlDataAdapter();
conn.Open();
using (SqlConnection conn = new SqlConnection(connStr))
{
SqlDataAdapter adapter = new SqlDataAdapter();
conn.Open();
using (SqlCommand cmd = new SqlCommand("CustOrdersOrders", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("CustomerID", "AROUT");
cmd.ExecuteScalar();
adapter.SelectCommand = cmd;
}
GridView1.DataSource = adapter;
GridView1.DataBind();
}
Это конечно вызывает ошибку, что источник данных не из правильный тип, но это именно то, что делает разметка. Единственное, о чем я могу думать, это использовать DataSource вместо DataSourceID. Итак, как я могу реплицировать эту разметку и автоматически получать все сортировки и подкачки? Если мне нужно использовать набор данных, почему разметка не требуется? Но даже с набором данных он, похоже, не обрабатывает пейджинг и сортировку автоматически, как я уже сказал.
Спасибо! Levi
Не понимают набор данных, вы не используете набор данных. DataSet позволяет сортировать и подкачки. Это datareader, который не позволяет эти вещи. DataReader является однонаправленным. Используйте SqlDataSource, который по умолчанию использует DataSet или следуйте инструкциям в ответе Shyju, который также предлагает вам использовать набор данных. – Mubarek