我想我搞砸了在我的代码的东西,它引发此异常时,电池点击指数超出范围。 DataGridView中的WinForms
“索引超出范围内的所有的时间。必须为非负值并小于集合的大小。 参数名称:索引 “
这里是我的代码
[code]
void dgMessages_CellClick(object sender, DataGridViewCellEventArgs e)
{
//try
//{
// Ignore clicks that are not on button cells.
if (e.RowIndex < 0 || e.ColumnIndex != dgMessages.Columns["clmMessageId"].Index) return;
//// Retrieve the Row Index
string RowId = dgMessages[0, e.RowIndex].Value.ToString();
//// convert string to Integer
int RowIndex;
int.TryParse(RowId, out RowIndex);
//Row Index calculation here
int RowAdj = RowIndex - 1;
//Retrive the Error Queue Message for that particular Row Index
string MesId = dgMessages.Rows[RowAdj].Cells["clmTransMessage"].Value.ToString();
[/code]
这是它抛出的异常 ”串MesId = dgMessages.Rows [RowAdj] .Cells [“ clmTransMessage”] Value.ToString()。 ;”。
我从sql表填充我的datagridview。
这是我的datagridview绑定
private void tbnFillgrid_Click(object sender, EventArgs e)
{
//try
//{
//
dgMessages.AutoGenerateColumns = false;
string sql = "select * from tblOriginalmessage om left join dbo.tblTraceMessages tm on om.OriginalMessageId = tm.messageid left join tblTransformedMessage transm on om.OriginalMessageId = transm.fkOriginalMessageID ";
SqlConnection connection = new SqlConnection(CONNECTION_STRING);
//SqlDataAdapter dataadapter = new SqlDataAdapter(sql, connection);
dataadapter = new SqlDataAdapter(sql, connection);
// DataSet ds = new DataSet();
ds = new DataSet();
connection.Open();
dataadapter.Fill(ds, scrollVal, 5, "tbltraceMessages");
connection.Close();
dgMessages.DataSource = ds;
dgMessages.DataMember = "tblTraceMessages";
dgMessages.Columns["clmMessageId"].DataPropertyName = "TraceMessageId";
dgMessages.Columns["clmNo"].DataPropertyName = "ID";
dgMessages.Columns["clmSender"].DataPropertyName = "Sender";
dgMessages.Columns["clmType"].DataPropertyName = "Type";
dgMessages.Columns["clmCreated"].DataPropertyName = "Received";
dgMessages.Columns["clmSaved"].DataPropertyName = "Transformed";
dgMessages.Columns["clmTransMessage"].DataPropertyName = "xmlTransformedMessageContent";
dgMessages.Columns["clmOriginalMessage"].DataPropertyName = "MessageBody";
}
谢谢KaeL,已经改变了我的代码,像魅力一样工作,我从其他论坛得到答案。 – Usher
没问题Usher :) – KaeL