【问题标题】:GridView is not visible in the outputGridView 在输出中不可见
【发布时间】:2014-03-17 12:39:03
【问题描述】:

好的! 我正在尝试合并我在 SelectCommand 中使用别名的 4 个表。
问题--> GridView 在最终输出中不可见
Guesswork--> 我什至尝试过不使用别名(仍然无法使用)。所以我有点迷失了,因为我要去哪里错了

如果我能提供更多信息,请告诉我?

    <asp:HiddenField runat="server" ID="FirstName_HiddenField" Value="s"/>
    <div id="StudentDetails">
        <div id="StudentDetailsBanner">
            Student Details
        </div>
        <div id="StudentDetailsContent">
            <asp:SqlDataSource runat="server"
                 ID="SqlDataSource_FirstName"
                 ConnectionString="Data Source=NIRMIT-PC\SQLEXPRESS;Initial Catalog=KohinoorDatabaseTrial3;Integrated Security=True" 
                 SelectCommand="SELECT SD.enq_id, SD.reg_id, SD.first_name, SD.middle_name, SD.last_name, SED.enq_date, POD.name, SD.DOB, SD.contact_no1, SCD.course, SD.admission_type
                                    FROM StudentDetails AS SD
                                    LEFT OUTER JOIN StudentEnquiryDetails AS SED
                                    ON SD.enq_id = SED.enq_id
                                    LEFT OUTER JOIN StudentCourseDetails AS SCD 
                                    ON SD.enq_id = SCD.enq_id
                                    LEFT OUTER JOIN ParentOccupationDetails AS POD 
                                    ON SD.enq_id = POD.enq_id
                                    WHERE SD.first_name LIKE '%@FirstName%'">
                <SelectParameters>
                    <asp:ControlParameter ControlID="FirstName_HiddenField" Name="FirstName" />
                </SelectParameters>
            </asp:SqlDataSource>
            <asp:GridView runat="server"
                ID="StudentDetailsGridView" 
                OnSelectedIndexChanged="StudentDetailsGridView_SelectedIndexChanged" 
                AutoGenerateColumns="false"
                Width="100%" 
                AllowPaging="true" 
                PageSize="10"
                CssClass="GridViewTable" ViewStateMode="Enabled" Visible="true">

                <Columns>
                    <asp:BoundField DataField="SD.enq_id" HeaderText="Enq No" />
                    <asp:BoundField DataField="SD.reg_id" HeaderText="Reg No" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Label runat="server" ID="Name" Text='<%# Bind("SD.first_name") + " " + Bind("SD.middle_name") + " " + Bind("SD.last_name") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="SED.enq_date" HeaderText="Enq Date" />
                    <asp:BoundField DataField="POD.name" HeaderText="Guardian" />
                    <asp:BoundField DataField="SD.DOB" HeaderText="Date of Birth" />
                    <asp:BoundField DataField="SDcontact_no1" HeaderText="Contact No" />
                    <asp:BoundField DataField="SCD.course" HeaderText="Course" />
                    <asp:BoundField DataField="SD.admission_type" HeaderText="Admission Type" />
                </Columns>
                <HeaderStyle CssClass="TableHeadingRow" />
                <RowStyle CssClass="TableRow" />
            </asp:GridView>                 
        </div>
    </div>

代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
    StudentDetailsGridView.DataSourceID = SqlDataSource_FirstName.ID;
    StudentDetailsGridView.DataBind();
}

【问题讨论】:

  • 确保您的查询返回结果。这将告诉您问题出在您的 GridView 还是您的查询上。
  • 是的,查询正在运行。
  • 将 StudentDetailsGridView.EmptyDataText 属性设置为“未找到结果”。在您的标记中。在 MSDN 上查看有关 EmptyDataText 属性的信息。
  • 试试@mason 说的。看看您是否可以在页面上显示任何内容。或者,您可以将您的项目的链接发送给我,以便我查看,以及您的数据提取(带有示例数据的 csv 文件就足够了)。谢谢
  • 谢谢@mason。是的,它显示 "No Result Found" 。但我不明白 MS SqlServer 如何给我行,而 ASP.NET 给我“未找到结果”?所以查询出了点问题,但是什么?看起来很正常! ://

标签: c# asp.net gridview left-join sqldatasource


【解决方案1】:

不应该

StudentDetailsGridView.DataSource = SqlDataSource_FirstName;

??

在后面的代码中?我认为您没有将 SqlDataSource 正确绑定到您的 gridview,这就是您的问题...

【讨论】:

  • 不!它仍然无法正常工作——如您所说,将 DataSourceID 更改为 DataSource 并将 SqlDataSource_FirstName.ID 更改为 SqlDataSource_FirstName
  • 您能注释掉您的列定义并设置 AutoGenerateColumns=true 吗?如果有绑定问题,我会徘徊吗?而且您确定数据源已完全填充 - 仅进行双重检查?
  • 嘿,克里斯,我将我的查询更改如下“SELECT * FROM StudentDetails AS SD LEFT OUTER JOIN StudentEnquiryDetails AS SED ON SD.enq_id = SED.enq_id LEFT OUTER JOIN StudentCourseDetails AS SCD ON SD.enq_id = SCD。 enq_id LEFT OUTER JOIN ParentOccupationDetails AS POD ON SD.enq_id = POD.enq_id WHERE SD.first_name LIKE '@FirstName%' OR SD.middle_name LIKE '%@FirstName%' OR SD.last_name LIKE '%@FirstName%'" 还是我我没有在浏览器中获取 GridView。在我的 MS SqlServer 2008 上,我得到 17 行符合上述条件。是的,我什至设置了 AutoGenerateColumns = true
【解决方案2】:

哇!!明白了!!

错误1)不要在DataField属性中使用别名(我的理论-DataField使用最终结果表的列名,没有别名)
错误 2) '%' + @FirstName + '%' 而不是 %@FirstName%

所以只是为了获得概述并让这个问题对其他人有所帮助

<asp:HiddenField runat="server" ID="FirstName_HiddenField" Value="s"/>
    <asp:HiddenField runat="server"/>
    <div id="StudentDetails">
        <div id="StudentDetailsBanner">
            Student Details
        </div>
        <div id="StudentDetailsContent">
            <asp:SqlDataSource runat="server"
                 ID="SqlDataSource_FirstName"
                 ConnectionString="Data Source=NIRMIT-PC\SQLEXPRESS;Initial Catalog=KohinoorDatabaseTrial3;Integrated Security=True" 
                 SelectCommand="SELECT SD.enq_id, SD.reg_id, SD.first_name, SD.middle_name, SD.last_name, SED.enq_date, POD.name, SD.DOB, SD.contact_no1, SCD.course, SD.admission_type
                                    FROM StudentDetails AS SD
                                    LEFT OUTER JOIN StudentEnquiryDetails AS SED
                                    ON SD.enq_id = SED.enq_id
                                    LEFT OUTER JOIN StudentCourseDetails AS SCD 
                                    ON SD.enq_id = SCD.enq_id
                                    LEFT OUTER JOIN ParentOccupationDetails AS POD 
                                    ON SD.enq_id = POD.enq_id
                                    WHERE SD.first_name LIKE '%' + @FirstName + '%'" >
                <SelectParameters>
                    <asp:ControlParameter ControlID="FirstName_HiddenField"  Name="FirstName" />
                </SelectParameters>
            </asp:SqlDataSource>
            <asp:GridView runat="server"
                ID="StudentDetailsGridView" 
                OnSelectedIndexChanged="StudentDetailsGridView_SelectedIndexChanged" 
                AutoGenerateColumns="false"
                Width="100%" 
                AllowPaging="true" 
                PageSize="10"
                CssClass="GridViewTable" ViewStateMode="Enabled" Visible="true" EmptyDataText="No Result Found">

                <Columns>
                    <asp:BoundField DataField="enq_id" HeaderText="Enq No" />
                    <asp:BoundField DataField="reg_id" HeaderText="Reg No" />
                    <asp:TemplateField HeaderText="Name">
                        <ItemTemplate>
                            <asp:Label runat="server" ID="Name" Text='<%# Bind("first_name") + " " + Bind("middle_name") + " " + Bind("last_name") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="enq_date" HeaderText="Enq Date" />
                    <asp:BoundField DataField="name" HeaderText="Guardian" />
                    <asp:BoundField DataField="DOB" HeaderText="Date of Birth" />
                    <asp:BoundField DataField="contact_no1" HeaderText="Contact No" />
                    <asp:BoundField DataField="course" HeaderText="Course" />
                    <asp:BoundField DataField="admission_type" HeaderText="Admission Type" />
                </Columns>
                <HeaderStyle CssClass="TableHeadingRow" />
                <RowStyle CssClass="TableRow" />
            </asp:GridView>                 
        </div>

    </div>

伙计们干杯:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 2015-03-18
    相关资源
    最近更新 更多