Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带存储过程的Gridview分页_C#_Asp.net_Sql_Gridview_Stored Procedures - Fatal编程技术网

C# 带存储过程的Gridview分页

C# 带存储过程的Gridview分页,c#,asp.net,sql,gridview,stored-procedures,C#,Asp.net,Sql,Gridview,Stored Procedures,您好,我在获取gridview页面时遇到问题。我已经读过很多关于将页码和每页记录传递到存储过程的文章,但问题是我的存储过程是完全动态的,使用一些相互连接的临时表,所以我尝试了建议的方法。我只是不知道该怎么做。我不应该只使用SQLDataSource的默认分页吗 <asp:GridView ID="gvFileResults" DataSourceID="SqlDataSource2" runat="server" AutoGenerateColumns="False" EmptyDataT

您好,我在获取gridview页面时遇到问题。我已经读过很多关于将页码和每页记录传递到存储过程的文章,但问题是我的存储过程是完全动态的,使用一些相互连接的临时表,所以我尝试了建议的方法。我只是不知道该怎么做。我不应该只使用SQLDataSource的默认分页吗

<asp:GridView ID="gvFileResults" DataSourceID="SqlDataSource2" runat="server" AutoGenerateColumns="False" EmptyDataText="Nothing Found" AllowSorting="True" AllowPaging="True" PageSize="50" OnPageIndexChanging="gvFileResults_PageIndexChanging">
    <Columns>
        <asp:HyperLinkField DataTextField="DisplayName" HeaderText="File Name" DataNavigateUrlFields="Drawer_Id, ParentFolders_Id, FolderId, Id" Target="_blank" SortExpression="DisplayName" DataNavigateUrlFormatString="~/Cabinet/FolderView.aspx?did={0}&amp;fid={1}&amp;sid={2}&amp;fileid={3}">
            <ControlStyle CssClass="gridlink" />
        </asp:HyperLinkField>
        <asp:BoundField DataField="FileType" HeaderText="File Type" ItemStyle-Width="100px" SortExpression="FileType" >
        <ItemStyle Width="100px" />
        </asp:BoundField>
        <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
        <asp:TemplateField HeaderText="Location" ItemStyle-Width="200px">
            <ItemTemplate>
                <div class="drawername"><%#Eval("DrawerName")%></div>
                <div class="foldername"><%#Eval("ParentFolderName")%></div>
                <div class="subfoldername"><%#Eval("FolderName")%></div>
            </ItemTemplate>
            <ItemStyle Width="200px" />
        </asp:TemplateField>
    </Columns>
</asp:GridView>

将以下两个属性添加到网格中,以启用网格内的分页。 AllowPaging=“true” PageSize=“5”

包含以下两个参数到SQL数据源,它将传递当前行索引和页面大小。

将页面大小和页面索引参数添加到SP,并将以下代码添加到SP中select语句的末尾:

按[列名称]订购 偏移量@PageIndex*@PageSize行
仅获取下一个@PageSize行

你可以考虑像往常一样运行你的查询,并用JavaScript处理分页。这可能会容易得多。是的,我只是不太熟悉javascript,只是总是在服务器端做事情。现在我只是加载了所有的结果,因为我没有时间去处理,而且加载速度仍然很快,所以如果我能想出如何使用javascript来完成,那就太好了。
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:FileCabConnection %>" SelectCommand="spSearchFiles" SelectCommandType="StoredProcedure">
    <SelectParameters>
        <asp:ControlParameter ControlID="tbFileName" DefaultValue="''" Name="FileName" PropertyName="Text" Type="String" />
        <asp:ControlParameter ControlID="tbFileDescription" Name="FileDescription" PropertyName="Text" Type="String" />
        <asp:ControlParameter ControlID="ddlFileType" Name="FileTypeId" PropertyName="SelectedValue" Type="Int32" />
        <asp:ControlParameter ControlID="ddlDrawer" Name="DrawerId" PropertyName="SelectedValue" Type="Int32" />
        <asp:ControlParameter ControlID="ddlFolder" Name="FolderId" PropertyName="SelectedValue" Type="Int32" />
        <asp:ControlParameter ControlID="ddlFolder" Name="SubFolderId" PropertyName="SelectedValue" Type="Int32" />
        <asp:SessionParameter Name="UserId" SessionField="UserId" Type="Int32" />
        <asp:SessionParameter Name="SecurityLevelId" SessionField="SecurityLevelId" Type="Int32" />
    </SelectParameters>
</asp:SqlDataSource>
SqlDataSource1.ConnectionString = ConfigurationManager.ConnectionStrings["FileCabConnection"].ConnectionString;
SqlDataSource1.SelectCommand = "spSearchFiles";
SqlDataSource1.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
SqlDataSource1.SelectParameters.Add(new Parameter("FileName", DbType.String, tbFileName.Text));
SqlDataSource1.SelectParameters.Add(new Parameter("UserId", DbType.Int32, user.Id.ToString())); 

if (tbFileDescription.Text != "")
{
    SqlDataSource1.SelectParameters.Add(new Parameter("FileDescription", DbType.String, tbFileDescription.Text));
}

if (Convert.ToInt32(ddlFileType.SelectedValue) > 0)
{
    SqlDataSource1.SelectParameters.Add(new Parameter("FileTypeId", DbType.Int32, ddlFileType.SelectedValue));
}

if (Convert.ToInt32(ddlDrawer.SelectedValue) > 0 && Convert.ToInt32(ddlFolder.SelectedValue) == 0 && Convert.ToInt32(ddlSubfolder.SelectedValue) == 0)
{
    SqlDataSource1.SelectParameters.Add(new Parameter("DrawerId", DbType.Int32, ddlDrawer.SelectedValue));
}

if (Convert.ToInt32(ddlFolder.SelectedValue) > 0 && Convert.ToInt32(ddlSubfolder.SelectedValue) == 0)
{
    SqlDataSource1.SelectParameters.Add(new Parameter("FolderId", DbType.Int32, ddlFolder.SelectedValue));
}

if (Convert.ToInt32(ddlSubfolder.SelectedValue) > 0)
{
    SqlDataSource1.SelectParameters.Add(new Parameter("SubFolderId", DbType.Int32, ddlSubfolder.SelectedValue));
}

gvFileResults.DataSource = SqlDataSource1;
gvFileResults.DataBind();