我目前正在使用带有组合框的DataGridView作为其窗体中的单元格,我希望每当我在该组合框中选择任何新项目时,我都会收到一条消息,说明我选择了新项目。任何人都可以告诉我应该将哪个事件处理程序绑定到DataGridView以确保这个?
答案 0 :(得分:1)
为了澄清,您想在用户选择组合框中的新项目时显示消息吗?
如果是这样,这与gridview无关,你可以使用javascript / jQuery来做到这一点。像这样:
$("#GridView1 select").change(function() {
var x = $(this, 'option:selected').attr('value');
alert(x);
});
我还建议您考虑创建自己的网格视图,它们非常适合快速显示信息以用于测试目的,但扩展不实用。您可以使用StringBuilder在代码后面创建gridview。我在这个例子中使用LINQ to SQL,但它显示了如何做到这一点。而不是使用resultSpan.InnherHtml + =,我建议使用字符串构建器。
public void displayLinqCategory()
{
StoreDataContext dbm = new StoreDataContext();
var query = dbm.Categories.Select(c=> new
{
Category = c,
subCategories = dbm.SubCategories.Where(s=> s.CategoryID == c.CategoryID)
}).OrderBy(c=> c.Category.Name);
resultSpan.InnerHtml += "<table class='tableStripe'>";
resultSpan.InnerHtml += "<tr><th width='1%' colspan='2' style='text-align:left;'>ACTIVE</th><th style='text-align:left;'>NAME</th><th width='1%'>#Items</th></tr>";
foreach (var result in query)
{
int i = result.Category.CategoryID;
string active = string.Empty;
bool s = result.Category.Active;
if (s == true)
active = "checked='checked'";
else
active = "";
string catBox = string.Format("<input class='categoryChk'value='{0}' type='checkbox' {1} />", i,active);
resultSpan.InnerHtml += "<tr><td>" + catBox + "</td><td colspan='2'><b>" + result.Category.Name + "</b></td><td></td></tr>";
foreach (var sub in result.subCategories)
{
int si= sub.SubCategoryID;
string sActive = string.Empty;
bool subActive = sub.Active;
if(subActive == true)
sActive = "checked='checked'";
else
sActive ="";
string subBox = string.Format("<input class='subCatChk' value='{0}' type='checkbox' {1} />", si, sActive);
resultSpan.InnerHtml += "<tr><td style='background:#FFF;'></td><td>"+subBox+"</td><td>" + sub.SubCategoryName + "</td><td></td></tr>";
}
}
resultSpan.InnerHtml += "</table>";
}
结果:
答案 1 :(得分:1)
试试这个
您可以使用DataGridView EditingControlShowing Event
这里需要检查DataGridView Cell的控件类型
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control.GetType() == typeof(DataGridViewComboBoxEditingControl))
{
ComboBox cmb = (ComboBox)e.Control;
cmb.SelectedIndexChanged += new EventHandler(cmb_SelectedIndexChanged);
}
}
和Combobox的SelectedIndexChanged
void cmb_SelectedIndexChanged(object sender, EventArgs e)
{
//throw new NotImplementedException();
ComboBox cmbSender = (ComboBox)sender;
MessageBox.Show(cmbSender.Text.ToString());
}
希望这有帮助