【问题标题】:asp.net gridview update with dropdownlist带有下拉列表的asp.net gridview更新
【发布时间】:2013-03-03 21:46:58
【问题描述】:

我有一个从 sqldatasource 中提取数据的 gridview,当我单击 Edit 时,我想添加一个下拉列表而不是文本框。下拉列表的值必须预设如下(不是从数据库中提取的)

这里是gridview模板代码:

<asp:TemplateField HeaderText="Priority" SortExpression="Priority">
   <EditItemTemplate>
        <asp:DropDownList ID="DropDownList1" runat="server" 
         DataTextField='<%# Bind("Priority") %>' 
         DataValueField='<%# Bind("Priority") %>' 
         DataSource='<%# Bind("Priority") %>' >
         <asp:ListItem>1:High</asp:ListItem>
         <asp:ListItem>2:Medium</asp:ListItem>
         <asp:ListItem>3:Low</asp:ListItem>
        </asp:DropDownList>
   </EditItemTemplate>
   <ItemTemplate>
       <asp:Label ID="lblPriority" runat="server" Text='<%# Bind("Priority") %>'></asp:Label>
   </ItemTemplate>
</asp:TemplateField>

我不断收到类似以下的错误:

DataBinding:“System.Char”不包含名为“3:Low”的属性。

谁能从上面看出是什么原因?

【问题讨论】:

    标签: asp.net gridview drop-down-menu sqldatasource


    【解决方案1】:

    您已将 DropDownList 绑定到数据库中的 Priority 字段。因此,每个优先级必须包含以下值之一:

    1:High
    2:Medium
    3:Low
    

    优先级字段是否包含整数(即 1、2、3)或值(即高、中、低)而不是:'1:High'、'2:Medium'.'3:Low'?

    如果不是这样,请提供优先级字段中的一些示例值。

    【讨论】:

    • 数据库中的优先级是 varchar(10),这可能是原因吗?它不应该将其作为字符串拾取吗?
    • 我不这么认为。该字段中有哪些不同的值?
    • 数据库优先级字段具有以下三个之一:1:高、2:中或 3:低。我已经通过添加具有三个优先级和每个 ID 的第二个查找表来完成它的工作,然后在主表中我有 Priority_ID 而不是 Priority。它更新得很好,但现在显示的 ID 这不是我想要的。我知道我需要展示它:select Priority_Type from CERecord, CEPriority where Priority_ID=Priority and ID=1 但如何将其绑定到单个标签?
    • 终于让它工作了,感谢这个例子msdn.microsoft.com/en-us/library/ms972948.aspx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多