繁体   English   中英

我需要 Visual Studio 中 C# 的帮助,当我运行应用程序时,它给了我在 position 0 [暂停] 处没有行

[英]I need help in C# in Visual Studio, when I run the app it gives me there is no row at position 0 [on hold]

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{  
    if (e.RowIndex >=0) 
    {
        DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];

        int a = int.Parse(row.Cells["ID"].Value.ToString());
        i.TrenutniID = a;     
    }                    
}

其他形式

int trenutniID;

public int TrenutniID
{
    get
    {
        return trenutniID;
    }

    set
    {
        trenutniID = value;
    }
}
private void IzmjeniOsobu_Load(object sender, EventArgs e)
{
    Console.WriteLine("potrebni id je : "+ trenutniID);
    string queryStr = "SELECT * from abba.osoba where ID=" + trenutniID + ";";
    string constring = "datasource=localhost;port=3306;username=root;password=";
    MySqlConnection conDataBase = new MySqlConnection(constring);
    MySqlCommand cmdDataBase = new MySqlCommand(queryStr, conDataBase);

    try
    {
        MySqlDataAdapter sda = new MySqlDataAdapter();
        sda.SelectCommand = cmdDataBase;
        DataTable dbdataset = new DataTable();
        sda.Fill(dbdataset);

        var stringArr = dbdataset.Rows[0].ItemArray.Select(x => x.ToString()).ToArray();

        idField.Text = stringArr[0];
        oib.Text = stringArr[1];
        name.Text = stringArr[2];
        lastname.Text = stringArr[3];
        place.Text = stringArr[4];
        adress.Text = stringArr[5];
        no.Text = stringArr[6];
        mail.Text = stringArr[7];
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

我想做更新,从网格获取数据,当我单击按钮更新时,给我更新的形式,并用数据填充,这样我就可以更新了。

以下 SQL 查询未返回任何行(没有 ID 为<whatever trenutniID is>的 abba.osoba)

SELECT * from abba.osoba where ID=" + trenutniID + ";

也许是一些防御性编码,还有一点整理:

    string queryStr = "SELECT * from abba.osoba where ID=@id";
    string constring = "datasource=localhost;port=3306;username=root;password=";
    MySqlConnection conDataBase = new MySqlConnection(constring);
    MySqlCommand cmdDataBase = new MySqlCommand(queryStr, conDataBase);

    //important! do not concatenate values into SQL strings. Put a parameter then populate it with a value
    cmdDAtaBase.Parameters.Add("@id", MySqlDbType.Int32 ).Value = trenutniID;

    try
    {
        MySqlDataAdapter sda = new MySqlDataAdapter();
        sda.SelectCommand = cmdDataBase;
        DataTable dt = new DataTable();
        sda.Fill(dt);

        if(dt.Rows.Count ==0)
          MessageBox.Show("Unknown ID " + trenutniID);
        else{

          idField.Text = dt.Rows[0]["id"].ToString(); //you could use a "string" name of column here instead of numbers like 0. it's marginally easier to read
          oib.Text = dt.Rows[0][1].ToString(); //or "oib" etc? 
          name.Text = dt.Rows[0][2].ToString();
          lastname.Text = dt.Rows[0][3].ToString();
          place.Text = dt.Rows[0][4].ToString();
          adress.Text = dt.Rows[0][5].ToString();
          no.Text = dt.Rows[0][6].ToString();
          mail.Text = dt.Rows[0][7].ToString();
       }

    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

如果您使用数据绑定,这也会变得容易得多,但是您没有发布足够的信息来对此提出建议

当您将数据输入数据网格而不按 Enter 时会发生这种情况。 为了在数据网格中添加一行,您必须在调用您编写的更新 function 之前按回车键。

请在“尝试”之前将以下内容添加到您的 function 中:

if (dbdataset.Rows.Count() == 0) { //显示一些消息,通知用户首先输入数据,并确保按 Enter 按钮返回; }

试试这个解决方案,这可能会有所帮助

更新代码:

MySqlDataAdapter sda = new MySqlDataAdapter();
        sda.SelectCommand = cmdDataBase;
        DataTable dbdataset = new DataTable();
        sda.Fill(dbdataset);
if(dbdataset.Rows.Count>0)
{
        var stringArr = dbdataset.Rows[0].ItemArray.Select(x => x.ToString()).ToArray();

        idField.Text = stringArr[0];
        oib.Text = stringArr[1];
        name.Text = stringArr[2];
        lastname.Text = stringArr[3];
        place.Text = stringArr[4];
        adress.Text = stringArr[5];
        no.Text = stringArr[6];
        mail.Text = stringArr[7];
}
else
{
//Do somthing
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM