2013-03-15 69 views
0

我有一个gridview从sqldatasource和我点击编辑时,我想添加一个下拉列表,而不是一个文本框的数据。asp.net 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> 

我不断收到类似的错误:

数据绑定的下拉列表的值必须为以下(而不是从DB拉)

这里是gridview的模板码预设:'System.Char'不包含名称为'3:Low'的属性。

任何人都可以从上面看到原因是什么?

回答

0

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

1:High 
2:Medium 
3:Low 

莫非优先级字段包含即1,2,3或一个值,即高,中的整数,低取代:“1:高','2:中等'。'3:低'?

如果不是这种情况,请从优先级字段中提供一些示例值。

+0

优先级是在Db中的varchar(10),这可能是原因吗?它不应该把它作为一个字符串吗? – 2013-03-15 09:08:59

+0

我不这么认为。这个领域有什么独特的价值? – w0051977 2013-03-15 09:19:21

+0

数据库优先级字段具有以下三种之一:1:高,2:中或3:低。我已经通过添加第二个查找表来获得它,通过添加具有三个优先级和每个ID的ID,然后在主表中我拥有Priority_ID而不是Priority。它更新得很好,但它现在显示的ID不是我想要的。我知道要显示它,我需要:'从CERecord中选择Priority_Type,其中Priority_ID = Priority和ID = 1的CEPriority,但是如何将它绑定到单个标签? – 2013-03-15 09:27:44