none
如何將一個新的BindingNavigator1和DataGridView1做聯繫 RRS feed

  • 問題

  • 請問如何將一個新的BindingNavigator1和DataGridView1做聯繫?

    我的DataGridView1不是用精靈抓來的資料,而是去用程式去命令的。

    寫了這行指令,但是沒有什麼反應.......

    Me.BindingNavigator1.BindingSource = Me.BindingSource1

    • 已移動 璉璉 2010年2月27日 下午 04:00 (從:Visual Studio一般討論區(General))
    2007年11月16日 上午 08:28

解答

  • 程式碼區塊

    using System;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Windows.Forms;

    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }


            private BindingSource bs = new BindingSource();

            private void Form1_Load(object sender, EventArgs e)
            {
                string strConn = ConfigurationManager.ConnectionStrings["NORTHWND"].ConnectionString;
                SqlConnection conn = new SqlConnection(strConn);

     

                conn.Open();

                DataSet ds = new DataSet();
                string sql = "SELECT * FROM Orders";
                SqlDataAdapter da = new SqlDataAdapter(sql, conn);
                da.Fill(ds);

                conn.Close();

     

                bs.DataSource = ds.Tables[0];
                bindingNavigator1.BindingSource = bs;
                dataGridView1.DataSource = bs;
            }
        }
    }

     

     

    該不會你忘了給 bindingNavigator1.BindingSource = bs

     

    • 已標示為解答 璉璉 2010年2月27日 下午 03:59
    2007年11月19日 上午 09:34

所有回覆

  • 程式碼區塊

    using System;
    using System.Data;
    using System.Windows.Forms;

     

    namespace WindowsApplication1
    {
        public partial class Form511 : Form
        {
            public Form511()
            {
                InitializeComponent();
            }

     

            private BindingSource bs = new BindingSource();

            private void Form511_Load(object sender, EventArgs e)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("A", typeof (string));
                dt.Columns.Add("B", typeof (string));
                dt.Columns.Add("C", typeof (int));
                dt.Columns.Add("D", typeof (string));
                dt.Columns.Add("E", typeof (string));

     

                dt.Rows.Add("1", "2", 3, "4", "5");
                dt.Rows.Add("2", "3", 4, "5", "1");
                dt.Rows.Add("3", "4", 5, "1", "2");
                dt.Rows.Add("4", "5", 1, "2", "3");
                dt.Rows.Add("5", "1", 2, "3", "4");

     

                bs.DataSource = dt;
                bindingNavigator1.BindingSource = bs;
                dataGridView1.DataSource = bs;
            }
        }
    }

     

     

    2007年11月16日 下午 12:09
  • 謝謝chhuang~~~~~~~~~

    我已經可以將BindingNavigator和DataGridView繫結了,但有一個問題是,我的游標為什麼會一直在最後一列,

    這樣去按下一筆或上一筆時,BindingNavigator的數字會變沒錯,但是游標不會跟著那筆的資料而變,是為什麼呢??

     

     

    2007年11月19日 上午 12:34
  • 程式碼區塊

    using System;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Windows.Forms;

    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }


            private BindingSource bs = new BindingSource();

            private void Form1_Load(object sender, EventArgs e)
            {
                string strConn = ConfigurationManager.ConnectionStrings["NORTHWND"].ConnectionString;
                SqlConnection conn = new SqlConnection(strConn);

     

                conn.Open();

                DataSet ds = new DataSet();
                string sql = "SELECT * FROM Orders";
                SqlDataAdapter da = new SqlDataAdapter(sql, conn);
                da.Fill(ds);

                conn.Close();

     

                bs.DataSource = ds.Tables[0];
                bindingNavigator1.BindingSource = bs;
                dataGridView1.DataSource = bs;
            }
        }
    }

     

     

    該不會你忘了給 bindingNavigator1.BindingSource = bs

     

    • 已標示為解答 璉璉 2010年2月27日 下午 03:59
    2007年11月19日 上午 09:34
  • 程式碼區塊

    Imports System.Data
    Imports system.Data.SqlClient
    Imports System.Windows.Forms

    Public Class Form5111
        Inherits System.Windows.Forms.Form
        Dim cn As New SqlClient.SqlConnection("server=.;database=cmms1;uid=sa;password=sesc")
        Dim da As New SqlClient.SqlDataAdapter
        Dim ds As New DataSet

     

      Private bs As New BindingSource 

     

    Private Sub Form5111_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    Dim cmmd As New SqlClient.SqlCommand
            cmmd = New SqlClient.SqlCommand("SELECT  B_CprPInvertory.LocationID AS 物料格編號,A_Component.ComponentID AS 物料編號,B_CprPInvertory.DPNum AS 入庫數量,B_CprPInvertory.FormID AS 請購單編號,B_CprPInvertory.VendorName AS 廠商名稱,A_Component.UPrice AS 單價,B_CprPInvertory.BatchNo AS 批號,B_CprPInvertory.Remark AS 備註,A_Component.Component AS 物料名稱 FROM A_Component INNER JOIN B_CprPInvertory ON A_Component.ComponentID = dbo.B_CprPInvertory.ComponentID", cn)
            da.SelectCommand = cmmd
            da.Fill(ds, "B_CprPInvertory")
            ds.Tables("B_CprPInvertory").Clear()
            DataGridView1.Columns.Clear()
            '將BindingNavigator1和DataGridView1做聯繫
            bs.DataSource = ds.Tables("B_CprPInvertory")
            BindingNavigator1.BindingSource = bs
            DataGridView1.DataSource = bs

     

     

    這樣子寫有錯嗎??

    BindingNavigator1應該是有和BindingSource聯繫在一起丫!

    因為DataGridView上的資料和BindingNavigator是一樣的數目。

    但是為什麼游標不會跟著BindingNavigator走呢?

    2007年11月20日 上午 01:25
  • 看不出來錯誤 Orz....

    你做一個測試用的 Form 把環境弄簡單一點來測試好了...

    再不行的話...你就自己想辦法刻出來好了....

     

    BindingSource and BindingNavigator in C# 2.0

     

    2007年11月20日 上午 03:00