나는 DataSource로 GridView
가지고 있습니다 SqlDataSource
. 는 GridView
자사가 PageSize
10 및 속성 집합 AllowPaging
true로합니다. 내가 달성하려는 것은 SqlDataSource
.
나는 데이터를 얻으려고했지만 Page_PreRender
gridview의 행 수에 대해 0을 얻습니다. gridview에는 실제로 100 개의 행이 있습니다.
현재 코드는 다음과 같습니다.
protected void Page_PreRender(object sender, EventArgs e)
{
gvBills.AllowPaging = false;
int t = gvBills.Rows.Count;
gvBills.AllowPaging = true;
}
gridview에서 모든 데이터를 가져 오는 방법에 대한 제안이나 지침이 도움이 될 것입니다.
최신 정보
내가 사용할 때
protected void gvBills_PreRender(object sender, EventArgs e)
{
gvBills.AllowPaging = false;
int t = gvBills.Rows.Count;
gvBills.AllowPaging = true;
gvBills.PageSize = 350;
}
올바른 줄 수를 얻었지만 gridview는 한 페이지에 모든 행을 표시합니다.
이것은 내 gridview 컨트롤입니다
<asp:GridView runat="server" ID="gvBills" CssClass="gridtable" PagerStyle-CssClass="pgr" DataSourceID="DataSourceBills"
AlternatingRowStyle-CssClass="alt" AutoGenerateColumns="false" ShowFooter="false" AllowSorting="true"
OnRowDataBound="gvBills_RowDataBound" EmptyDataText="<%$ Resources:general_tags, NoDataFound %>" AllowPaging="true" PageSize="350">
및 내 sqldatasource
<asp:SqlDataSource ID="DataSourceBills" runat="server" ConnectionString="<%$ ConnectionStrings:EnergyManagementConnectionString %>"
SelectCommand="usp_BCPD_SearchBillsHistory" SelectCommandType="StoredProcedure"
DeleteCommand="usp_BCPD_DeleteData" DeleteCommandType="StoredProcedure">
<SelectParameters>
<asp:SessionParameter Name="UD_ID" SessionField="UserID" Type="Int32" />
<asp:ControlParameter Name="BillType" ControlID="hfld_BillType" PropertyName="Value" Type="Int32" />
<asp:ControlParameter Name="SL_ID" ControlID="hfld_SL_ID" PropertyName="Value" Type="Int32" />
<asp:ControlParameter Name="CD_ID" ControlID="ddlConsumer" PropertyName="SelectedValue" Type="Int32" />
<asp:ControlParameter Name="CUR_ID" ControlID="ddlCustomer" PropertyName="SelectedValue" Type="Int32" />
<asp:ControlParameter Name="BSD_ID" ControlID="hfld_BSD_ID" PropertyName="Value" Type="Int32" />
<asp:ControlParameter Name="Consumers" ControlID="hfld_ArrFinalConsumersSearch" PropertyName="Value" Type="String" />
<asp:ControlParameter Name="Channels" ControlID="hfld_ArrFinalChannelsSearch" PropertyName="Value" Type="String" />
<asp:ControlParameter Name="Customers" ControlID="hfld_ArrFinalCustomersSearch" PropertyName="Value" Type="String" />
<asp:ControlParameter Name="strFromProductionDate" ControlID="hfld_FromProductionDate" PropertyName="Value" Type="String" />
<asp:ControlParameter Name="strToProductionDate" ControlID="hfld_ToProductionDate" PropertyName="Value" Type="String" />
<asp:ControlParameter Name="strProductionDate" ControlID="hfld_ProductionDate" PropertyName="Value" />
<asp:ControlParameter Name="Reading" ControlID="ddlReadingFlag" PropertyName="SelectedValue" Type="Int32" />
<asp:ControlParameter Name="strFromReadingDate" ControlID="hfld_FromReadingDate" PropertyName="Value" Type="String" />
<asp:ControlParameter Name="strToReadingDate" ControlID="hfld_ToReadingDate" PropertyName="Value" Type="String" />
<asp:ControlParameter Name="BillStatus" ControlID="ddlBillStatus" PropertyName="SelectedValue" Type="Int32" />
<asp:ControlParameter Name="BPET_ID" ControlID="ddlBillError" PropertyName="SelectedValue" Type="Int32" />
<asp:ControlParameter Name="CustomerType" ControlID="ddlCustomerType" PropertyName="SelectedValue" Type="Int32" />
<asp:Parameter Name="ChannelDisplayType" Type="Int32" DefaultValue="0" />
<asp:ControlParameter Name="AdditionalParameter" ControlID="hfld_AdditionalParameter" PropertyName="Value" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
나는 다음과 같은 것을 Page_Load 이벤트에 붙일 것입니다 (여기서 ds1은 sqldatasource입니다).
DataView dv = (DataView)ds1.Select(DataSourceSelectArguments.Empty);
DataTable dt = new DataTable();
dt = dv.ToTable();
그런 다음 'dt'에서 데이터를 가져올 수 있습니다.
최신 정보
sqldatasource가 아닌 Gridview에서 데이터를 가져 오려면 다음을 수행 할 수 있습니다.
private DataTable getGridData()
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("RowId", typeof(Int)));
dt.Columns.Add(new System.Data.DataColumn("Title", typeof(String)));
//Add more data columns as needed.
foreach (GridViewRow row in gvBills.Rows)
{
dr = dt.NewRow();
dr[0] = (int)row.FindControl("RowId");
dr[1] = row.FindControl("Title").ToString();
//Add more values if more columns are added / needed.
dt.Rows.Add(dr);
}
return dt;
}
데이터를 사용해야하는 곳에서이 메서드를 호출하십시오.
업데이트 2 이전에 다른 코드에서했던 것처럼 페이징의 현재 페이지 턴에서만 행을 반환하지 않도록 한 다음 행을 실행하기 전에 다시 데이터 바인딩합니다.
gvBills.Allowpaging = false;
gvBills.DataBind();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다