私DataGridView
は2つの列を含むものを持っていComboBox
ます。2番目ComboBox
は、最初から選択した値に応じてデータで埋められますComboBox
。
SelectedIndexChanged
最初のイベントの処理方法ComboBox
。
私DataGridView
は2つの列を含むものを持っていComboBox
ます。2番目ComboBox
は、最初から選択した値に応じてデータで埋められますComboBox
。
SelectedIndexChanged
最初のイベントの処理方法ComboBox
。
EditingControlShowing
イベントを使用するとcb_SelectedIndexChanged
、ユーザーがコンボボックスを選択したが選択を変更しなかった場合でも、イベントが数回発生します。
これは私のために働きます:
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == comboboxColumn.Index && e.RowIndex >= 0) //check if combobox column
{
object selectedValue = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
}
}
//changes must be committed as soon as the user changes the drop down box
private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dataGridView1.IsCurrentCellDirty)
{
dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
DataGridViewの質問に関する優れたリソースは、次の場所にあります。
http://www.windowsclient.net/Samples/Go%20To%20Market/DataGridView/DataGridView%20FAQ.doc
そこから、選択した変更イベントを処理する方法:
SelectedIndexChangedイベントを処理するにはどうすればよいですか?
ユーザーがComboBox編集コントロールでアイテムをいつ選択したかを知ることが役立つ場合があります。フォームにComboBoxを使用すると、通常、SelectedIndexChangedイベントを処理します。DataGridViewComboBoxでは、DataGridView.EditingControlShowingイベントを使用して同じことを行うことができます。次のコード例は、これを行う方法を示しています。このサンプルは、複数のSelectedIndexChangedイベントが発生しないようにする方法も示していることに注意してください。
private void dataGridView1_EditingControlShowing(object sender,
DataGridViewEditingControlShowingEventArgs e)
{
ComboBox cb = e.Control as ComboBox;
if (cb != null)
{
// first remove event handler to keep from attaching multiple:
cb.SelectedIndexChanged -= new
EventHandler(cb_SelectedIndexChanged);
// now attach the event handler
cb.SelectedIndexChanged += new
EventHandler(cb_SelectedIndexChanged);
}
}
void cb_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show("Selected index changed");
}
次のように、2番目のドロップダウンリストを[更新]パネルに配置します
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Inline">
<ContentTemplate>
<asp:DropDownList ID="ddl2" runat="server" >
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddl1" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
このように、最初のドロップダウンリストにAutoPostBack="true"プロパティを設定します。
<asp:DropDownList ID="ddl1" runat="server" AutoPostBack="true"
OnSelectedIndexChanged="ddl1_SelectedIndexChanged">