我試圖用編程方式在我的標記中複製綁定。 看來我不得不使用數據集來綁定而不是我的標記中顯示的SqlDataSource。 此外,當使用數據集時,我突然失去了分頁,排序等功能,並且出現了我需要手動處理的錯誤。 他們之前自動處理?以編程方式將GridView綁定到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();
}
這ofcourse引發錯誤的數據源的不是:
<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>
我像這樣的東西取代它正確的類型,但這正是標記所做的。 我唯一能想到的就是使用DataSource而不是DataSourceID。 那麼如何複製這個標記並自動獲得所有的排序和分頁? 如果我必須使用數據集,爲什麼標記不需要? 但是,即使對於數據集,它似乎也不像我說的那樣自動處理分頁和排序。
謝謝! Levi
不要誤會數據集,你不使用的數據集。 DataSet允許排序和分頁。這是datareader,不允許這些東西。 DataReader是單向的。可以使用默認使用DataSet的SqlDataSource,也可以按照Shyju的答案中的說明來建議您使用數據集。 – Mubarek