我有,這是獲得在不同頁面上使用的控制,但一個特定的頁面上,我有一個下拉菜單顯示,讓用戶改變在某一個領域數據庫。下拉有兩個項目(「出勤天」和「不聽講日」),和我想要的選項是在數據庫中當訪問控制被加載。填充從數據庫下拉與選定的值(隱藏列)
這裏是我的網格視圖頂部:
<asp:GridView runat="server" DataSourceID="sdsLookups" ID="gvValues"
AutoGenerateColumns="False" Width="760px" OnDataBound ="GridView_DataBound">
這裏是在網格視圖實際下拉。在正確的頁面上,正確的值從數據庫中加載:
<asp:TemplateField HeaderText="Is Attendance?">
<ItemTemplate>
<asp:DropDownList id="ddlAttendanceStatus" AutoPostBack="True" runat ="server" SelectedValue='<%# Eval("rules") %>' >
<asp:ListItem>Attendance Day</asp:ListItem>
<asp:ListItem>Not Attendance Day</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
這是我用來當前隱藏列的代碼。我也試圖檢查,看看,如果該項目爲空或不是,但我還沒有得到這又工作:
protected void GridView_DataBound(object sender, EventArgs e)
{
if (this.LookupType == "Day Status" ? true : false)
{
gvValues.Columns[12].Visible = true;
GridViewRow row = (sender as Control).Parent.Parent as GridViewRow;
DropDownList rules = (row.FindControl("ddlAttendanceStatus") as DropDownList);
ListItem item = rules.Items.FindByText("Attendance Day");
if (item != null)
rules.Items.FindByText("Attendance Day").Selected = true;
}
}
目前,該列僅出現在正確的頁面上,但是當我去使用此控件的其他頁面時,我得到一個錯誤,指出:
ArgumentOutOfRangeException: 'ddlAttendanceStatus' has a SelectedValue which is invalid because it does not exist in the list of items. Parameter name: value
我知道爲什麼我得到這個錯誤,但我不知道如何解決這個問題。如果我不在正確的頁面上,是否有辦法完全忽略此字段?或者我應該採取不同的路線?
請讓我知道如果我需要發佈更多的信息。
預先感謝您。
謝謝你的幫助。我能夠獲得正確的值,但我遇到了另一個問題。在網格視圖中,我需要能夠更改下拉列表的值,然後單擊更新按鈕以更改數據庫中的值。但是,通過此解決方案,當我更改下拉值時,屏幕將刷新並將其更改回存儲在數據庫中的值。 –
更新了我的答案。 – VDWWD
這工作。謝謝! –