错误:asp.net中位置0处没有行

时间:2019-04-16 02:05:05

标签: asp.net sql-server

我编写了这段代码以从gridview获取数据以显示控件,但失败了:

  

位置0没有行。

在线:

txtSTT.Text = ds.Tables["Trailer"].Rows[0].ItemArray.GetValue(0).ToString();

完整代码:

    protected void btnSua_Click(object sender, EventArgs e)
    {
        string STT = ((LinkButton)sender).CommandArgument;

        SqlConnection conn = new SqlConnection(@"Data Source=DESKTOP-R8LG380\SQLEXPRESS;Initial Catalog=PHIM;Integrated Security=True");
        string query = "SELECT * FROM Trailer WHERE STT = '" + STT + "'";
        SqlCommand cmd = new SqlCommand(query, conn);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds, "Trailer");

        txtSTT.Text = ds.Tables["Trailer"].Rows[0].ItemArray.GetValue(0).ToString();
        txtMaTrailer.Text = ds.Tables["Trailer"].Rows[0].ItemArray.GetValue(1).ToString();
        cmbMaPhim.SelectedValue = ds.Tables["Trailer"].Rows[0].ItemArray.GetValue(2).ToString();
        txtUrlTrailer.Text = ds.Tables["Trailer"].Rows[0].ItemArray.GetValue(3).ToString();
        txtGhiChu.Text = ds.Tables["Trailer"].Rows[0].ItemArray.GetValue(4).ToString();

        txtSTT.ReadOnly = true;
        txtSTT.Visible = true;
        lbSTT.Visible = true;
    }

1 个答案:

答案 0 :(得分:0)

从错误消息中,我会说您的查询没有返回任何行。

尝试在分配给query后立即放置一个断点,然后将字符串复制到SQL Server Management Studio的查询窗口中,以查看是否有任何数据行返回。

它可能不返回任何行。调试查询,直到您知道有一个返回数据的查询为止。

此外,除了将此函数的内容放入try / catch块外,我还将在ds.Tables["Trailer"].Rows[0]之类的if块中包装所有使用if(ds.Tables["Trailer"].Rows.Count > 0){的行,例如|