異なるページで使用されているコントロールがありますが、特定のページでドロップダウンが表示され、データベース。ドロップダウンには2つの項目(「出席日」と「出席日」)があり、コントロールにアクセスしたときに読み込まれるデータベースのオプションが必要です。ここで選択した値(非表示の列)を使用してデータベースからのドロップダウンを設定する
は私のグリッドビューの上の部分です。ここで
<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>
ここでは現在、列を非表示にするためのコードです。私はまた、アイテムがnullであるかどうかを確認しようとするんだけど、私はまだ仕事にそれを持っていない:
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
これは機能しました。ありがとうございました! –