ASP.NET 2.0 小技巧
在GridView在編輯模式時內嵌DropDownList, 當對應的那筆資料欄位值為Null時怎麼辦?
這是在上ASP.NET 課程時同學問的問題.
欄位Null值時那個DropDownList 的SelectedValue無法對應到對的值, 所以網頁就會出現錯誤. 怎麼解決呢?
如果那個欄位不能設計成不可為Null值, 那只好在DropDownList裡多加一個可以給SelectedValue對應到的值.
作法是:
當Null值被對Building 到SelectedValue時, 那個值實際上是一個空字串.
所以可以在DropDownList的Items 加上一個項目, Text 為"請選擇", Value為空值.
<asp:ListItem Value="">請選擇</asp:ListItem>
而且必須設定DropDownList的AppendDataBoundItems屬性為"True", 整個TemplateField看起來像這樣:
<asp:TemplateField HeaderText="CategoryID" SortExpression="CategoryID">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="SqlDataSource2" DataTextField="CategoryName"
DataValueField="CategoryID" SelectedValue='<%# Bind("CategoryID") %>'
AppendDataBoundItems="True">
<asp:ListItem Value="">請選擇</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT [CategoryID], [CategoryName] FROM [Categories]">
</asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("CategoryID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
就可以了.
沒有留言:
張貼留言