繁体   English   中英

C#ASP.NET DetailsView-仅在页面加载时显示第一条记录

[英]C# ASP.NET DetailsView - display first record only on page load

我当前在GridView中隐藏数据库中的所有行,直到在DetailsView中按下CommandField(选择)字段为止。 如何在C#中显示页面加载时的第一条记录?

任何帮助深表感谢 :)

<asp:GridView ID="GridView12" DataKeyNames="DealId" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
                        <Columns>
                            <asp:CommandField ShowSelectButton="True" ShowHeader="False" />
                            <asp:BoundField DataField="DealId" ItemStyle-CssClass="gv-class" SortExpression="DealId" Visible="true" />
                            <asp:BoundField DataField="DealName" ItemStyle-CssClass="gv-class" SortExpression="DealName" />
                            <asp:BoundField DataField="DealDescription" ItemStyle-CssClass="gv-class" SortExpression="DealDescription" />
                            <asp:BoundField DataField="DealLocation" ItemStyle-CssClass="gv-class" SortExpression="DealLocation" />
                            <asp:BoundField DataField="DealPrice" ItemStyle-CssClass="gv-class" SortExpression="DealPrice" />
                            <asp:BoundField DataField="ImagePath" ItemStyle-CssClass="gv-class" SortExpression="ImagePath" />
                        </Columns>
                    </asp:GridView>
                </div>
                <div class="col-md-8">
                    <asp:DetailsView ID="DetailsView1" CssClass="image-class" runat="server" Height="50px" AutoGenerateRows="False" DataSourceID="SqlDataSource2">
                        <Fields>
                            <asp:ImageField DataImageUrlField="ImagePath" ItemStyle-CssClass="dv-img" SortExpression="ImagePath"/>
                            <asp:BoundField DataField="DealId" ItemStyle-CssClass="dv-1 float" SortExpression="DealId" Visible="false"/>
                            <asp:BoundField DataField="DealName" ItemStyle-CssClass="dv-2 float" SortExpression="DealName" />
                            <asp:BoundField DataFie`enter code here`ld="DealDescription" ItemStyle-CssClass="dv-3 float" SortExpression="DealDescription" />
                            <asp:BoundField DataField="DealLocation" ItemStyle-CssClass="dv-4 float" SortExpression="DealLocation" />
                            <asp:BoundField DataField="DealPrice" ItemStyle-CssClass="dv-5 float" SortExpression="DealPrice" />                                
                        </Fields>
                    </asp:DetailsView>

我看到了几种方法。 我可以建议为您的gridview使用两个不同的SqlDataSource.SelectCommands吗?

首先,从标记中的SQLDATASOURCE中删除SELECTCOMMAND="Select * from table" ,然后使用两种方法在CodeBehind中创建selectcommand。

一个在回发为false时加载Page_Load,另一个在单击select时加载,然后回发。

protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == true)
{
sqlcommandall();
}
else
{
sqlcommandone();
}
}
protected void sqlcommandall()
{
SqlDataSource1.SelectCommand = "select * from table order by id";
}
protected void sqlcommandone()
{
SqlDataSource1.SelectCommand = "select top 1 * from table order by id";
}

其他方法都相同,除了可以通过在标记中的GridView12声明中添加OnLoad="GridView12_Load"来触发select命令,并且可以使用代替Page_load方法的方法:

protected void GridView12_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == true)
{
sqlcommandall();
}
else
{
sqlcommandone();
}
}

这是有关更改选择命令的一些信息: 需要从C#修改SqlDataSource的SelectCommand参数

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM