Gridviewでメッセージが見つからないというメッセージを表示する方法

私は上記のクエリを検索し、非常に多くの答えを得ましたが、その答えのどれも私にとって役に立ちません。したがって、この質問を投稿してください。

私は二つの日付でgridviewを持っています。

  1. 差出人
  2. 宛先

2つの日付を選択したときに、2つの日付の間のデータがデータベースで使用可能であれば、それはgridviewに表示されます。データが利用できない場合は、 Label にメッセージを表示したい、つまり "No Records Found"と表示します。

これが私のコードです。

 myConn.Open();
 SqlCommand cmd = new SqlCommand(@"select User_id , LoginDate from LoginLog where LoginDate between ('" + TextBox1.Text + "') and ('" + TextBox2.Text + "')", myConn);
 DataTable dt = new DataTable();
 SqlDataAdapter sda = new SqlDataAdapter(cmd);
 sda.Fill(dt);
 GridView1.DataSource = dt;

 if (GridView1.Rows.Count > 0)
 {
     GridView1.DataBind();
 }
 else
 {
     Lab4.Text = "No Records Found ";
 }

 myConn.Close();
1
。ただし、そのためには DataBind()を呼び出す必要があるので、 GridView1.Rows.Count> 0 を削除します。
追加された 著者 VDWWD,

4 答え

これをgridviewコントロールに追加します

EmptyDataText="No Records Found"
0
追加された
しかしラベルはgridviewの外側にあります
追加された 著者 Mandar Dhadve,
ラベルがあり、idがLab4です。ラベルにメッセージを表示します
追加された 著者 Kalpesh,

DataTableに値が含まれているかどうかを確認するだけです。

 myConn.Open();
SqlCommand cmd = new SqlCommand(@"select User_id , LoginDate from LoginLog where LoginDate between
                                 ('" + TextBox1.Text + "') and ('" + TextBox2.Text + "')", myConn);
DataTable dt = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(dt);
GridView1.DataSource = dt;
if (dt.Rows.Count > 0)
{
    GridView1.DataBind();
}
else
{
    Lab4.Text = "No Records Found ";
}
myConn.Close();

お役に立てれば。よろしく:)

0
追加された
(dt.Rows.Count> 0){GridView1.DataBind();}を試してください。 } else {Lab4.Text = "レコードが見つかりません"; GridView1.visible = false; }
追加された 著者 Gihan Saranga Siriwardhana,
私がすることはSqlDaraReaderを介してデータを取得することです。データを取得してデータテーブルを返すための別の関数を作成します。そのデータテーブルをdatagridview.Sourceに割り当てます。代わりにdataGridView.dataBindを使用してそのメソッドを使用してください
追加された 著者 Gihan Saranga Siriwardhana,
私の新しい答えをチェック
追加された 著者 Gihan Saranga Siriwardhana,
私はこのコードを試してみましたが、現在はLabelの出力とgridviewの完全なデータを取得しています。2つの日付の間にデータが入手できなくてもです。
追加された 著者 Kalpesh,
データベースにデータが存在していても、Gridviewは完全に無効になります。今ラベルはうまく働いています
追加された 著者 Kalpesh,

この方法を試してください

if (dt.Rows.Count > 0)
{
    GridView1.DataBind();
}
else
{
    Lab4.Text = "No Records Found ";
}
myConn.Close();

private void Retrieve()
        {
              if(loadPositions() != null){
                dgvEmployeePositions.DataSource = loadPositions();
              }
              else{
                  Lab4.Text = "No Records Found ";
              }


        }

 private DataTable loadPositions()
        {
            DataTable dt = new DataTable();;
            myConn.Open(); 
            String q = "your query here";
            MySqlCommand cmd = new MySqlCommand(q, connectionString);
            MySqlDataReader r = cmd.ExecuteReader();

            if(r.hasRows){
                dt.Load(r); 
                return dt;          
            }
            else{
                return null;
            }               


        }
0
追加された

これをあなたのASPXファイルに追加してください:


そしてあなたのCSは次のようになります。

myConn.Open();
SqlCommand cmd = new SqlCommand(@"select User_id , LoginDate from LoginLog where LoginDate between
                                 ('" + TextBox1.Text + "') and ('" + TextBox2.Text + "')", myConn);
DataTable dt = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(dt);
GridView1.DataSource = dt;
if (dt.Rows.Count > 0)
{
    GridView1.DataBind();
}
myConn.Close();

Or you can see this link: Show asp.net Gridview Header when no data/records found

0
追加された