如何根据2个布尔表列填充列表视图?

时间:2010-02-11 14:45:31

标签: c# .net asp.net sql listview

我有一个包含播放/戏剧脚本的数据库表。剧本可以分类为“戏剧与教育”,“青少年戏剧”或两者(通过使用bool来确定它们是否属于所述类别);

  • scriptID:int
  • theatreAndEducation:bit
  • playsForYoungPeople:bit
  • scriptTitle:varchar
  • scriptSample:文本
  • thumbImageUrl:varchar

在主菜单中,我有一个下拉列表,其中包含以下链接;

  • a runat =“server”href =“〜/ WebForm / scriptList”>剧院&教育
  • a runat =“server”href =“〜/ WebForms / scriptList”>扮演4名年轻人

当用户点击其中一个链接时,会将其转到包含列表视图的页面。我希望这个listview填充与所单击的链接对应的记录。

我猜测需要一个查询字符串,但我想不出一个可以使用的查询字符串。

以下是当前状态的列表视图。有关查询字符串的任何想法以及如何配置sql数据源以根据单击的链接显示相应的脚本记录?

<asp:ListView ID="scriptsListView" runat="server" DataSourceID="SqlDataSource1">
    <LayoutTemplate>
        <table>
            <tr>
                <td>title</td>
                <td>summary</td>
                <td>image</td>
            </tr>
            <tr>
                <asp:PlaceHolder ID="itemPlaceholder" runat="server">
                </asp:PlaceHolder>
            </tr>
        </table>
    </LayoutTemplate>

    <ItemTemplate>
        <tr>
            <td><%# Eval ("scriptTitle") %></td>
            <td><%# Eval ("scriptSample") %></td>
            <td><asp:Image ID="image" runat="server" 
                     ImageUrl='<%# "~/Images/Scripts/" + Eval("thumbImageUrl") %>' /></td>
        </tr>
    </ItemTemplate>
</asp:ListView>

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="">
    <SelectParameters>
    </SelectParameters>
</asp:SqlDataSource>

2 个答案:

答案 0 :(得分:1)

在page_load

上设置sqldatasource的select语句

a runat =“server”href =“〜/ WebForm / scriptList?type = theatre”&gt; theatre&amp;教育

一个runat =“server”href =“〜/ WebForms / scriptList?type = plays”&gt;扮演4个年轻人

protected void Page_Load(object sender,EventArgs e)

if(Page.IsPostBack == false) {   string s;

if (Request.QueryString["type"]=="theatre")
    {
      s="select * from scripts where theatreAndEducation = 1";
    }
else
    if (Request.QueryString["type"]=="plays")
    {
      s = "select * scripts where playsForYoungPeople = 1";
    }
    SqlDataSource1.SelectCommand = s;

} }

答案 1 :(得分:0)

您可以传递一个区分两个视图的查询字符串参数。 此外,在后面的代码中,在SqlDataSource的Select事件中,您可以替换select命令。