如何以编程方式在DataGridView中选择一行并触发DataGridView.SelectionChanged事件
本文关键字:DataGridView 一行 事件 SelectionChanged 编程 方式 选择 | 更新日期: 2023-09-27 18:08:21
我怎么也弄不明白这个问题。我有一个很长的DataGridView(不允许MultiSelect),当用户提交对数据的更改时,来自网格的数据将被清除并重新绘制(因为更改可能影响多行,这是更简单的方法)。但是,当我尝试以编程方式选择行时,它也不会触发DataGridView。SelectionChanged事件,我用它来显示与DataGridView当前单元格索引相关的数组中的数据。当doMagicStuff执行时,会显示错误索引(特别是索引0)的值。
private void doMagicStuff()
{
int selRow = myDGV.CurrentCell.RowIndex;
myDGV.Rows.Clear();
/*Perform Task, Redraw data*/
myDGV.CurrentCell = myDGV[selRow, 0];
}
private void myDGV_SelectionChanged(object sender, EventArgs e)
{
Label1.Text = myDisplayValue1[myDGV.CurrentCell.RowIndex];
Label2.Text = myDisplayValue2[myDGV.CurrentCell.RowIndex];
TextBox1.Text = myEditValue1[myDGV.CurrentCell.RowIndex];
TextBox2.Text = myEditValue2[myDGV.CurrentCell.RowIndex];
}
确保您的客户端设置和OnSelectedIndexChanged设置如下:净AJAX)
。aspx页
<telerik:RadGrid ID="Grid1" runat="server" OnSelectedIndexChanged="Grid1_SelectedIndexChanged" OnItemDataBound="Grid1_ItemDataBound" OnPreRender="Grid1_PreRender">
<ClientSettings EnablePostBackOnRowClick="true">
<Selecting AllowRowSelect="true"></Selecting>
</ClientSettings>
</telerik:RadGrid>
aspx.cs页
protected void Grid1_SelectedIndexChanged(object sender, EventArgs e)
{
string value = null;
foreach(GridDataItem item in Grid1.SelectedItems)
{
//column name is in doub quotes
value = item["Name"].Text;
}
}
在表单中添加一个按钮点击来测试DataGridView中的选定值。双击那个按钮,然后把这段代码粘贴到这里
foreach (DataGridViewRow row in myDGV.SelectedRows)
{
Label1.Text = //This should be hard coded the only thing that should change dynamically is the TextBox Values
Label2.Text = //This should be hard coded the only thing that should change dynamically is the TextBox Values
TextBox1.Text = row.Cells[0].Value.ToString();//change the 0 or 1 to fit your column Index position
TextBox2.Text = row.Cells[2].Value.ToString();
}
如果你有4列和4个文本框,那么你将分配所有的文本框。foreach循环中的文本值遵循模式并将索引增加1,因此2个文本框表示行。Cells[0]是第一列行。