声明式数据绑定教程-GridView 模板2

作者:vkvi 来源:ITPOW(原创) 日期:2008-8-10
  • 为表 cftea_docs 增加一个字段 categoryId int,用以表示文档的栏目,为了兼容前面的示例,将该字段的默认值设为 0。
  • 同时新建一个表 cftea_categories,字段 categoryId, categoryName,分别表示栏目 Id 和栏目名称。并随意添加一些记录到表中。

SelectCommand,将数据源的 SelectCommand 改为:

SelectCommand="select id, title, content, cftea_docs.categoryId, ISNULL(categoryName, '') as categoryName from cftea_docs left join cftea_categories on cftea_docs.categoryId=cftea_categories.categoryId"

也就是说把 categoryName 也加进去,为了避免出现 NULL,加了 ISNULL 函数。

新加一个数据源

<asp:SqlDataSource ID="SqlDataSource2" runat="server"
    ConnectionString="<%$ ConnectionStrings:MySqlServer %>"
    SelectCommand="select categoryId, categoryName from cftea_categories union select 0, ''">
</asp:SqlDataSource>

为了让没有指定 categoryId 的文档不会出错,这里使用 union 为结果增加一个空白的选择项。

为 GridView 新增一个模板列

        <asp:TemplateField HeaderText="栏目">
            <ItemTemplate>
                <%# Eval("categoryName") %>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:DropDownList ID="_categoryId" runat="server"
                    DataSourceID="SqlDataSource2" DataTextField="categoryName" DataValueField="categoryId" SelectedValue="<%# Bind('categoryId') %>">
                </asp:DropDownList>
            </EditItemTemplate>
        </asp:TemplateField>

目录列表也是绑定了数据源的,同时指定了 SelectedValue,以选择当前文档的栏目,注意在编写该属性时不会弹出自动匹配框,在这里,不用担心会发生错误。

效果如下:

GridView 模板

相关文章