문제

데이터 세트를 반환하는 웹 서비스를 사용하고 있습니다. 이 데이터 세트에는 5 개의 테이블이 있습니다. 테이블 A, B, C, D, E라고 가정 해 봅시다. 테이블 A를 사용합니다.

그래서

DataTable dt = new DataTable()
dt = dataset.Table["A"]

이제이 데이터 가능에는 열 A1, A2, A3, A4, A5, A6, A7이 있습니다.

열 A3 및 A4 열만 가져 와서 DataGrid에 바인딩하고 싶다고 가정 해 봅시다.

어떻게해야합니까?

도움이 되었습니까?

해결책

필요한 것보다 더 많은 데이터가 있다는 사실을 무시하십시오. 세트 AutoGenerateColumns 에게 false. 만들다 BoundColumns ~을 위한 a3 그리고 a4.

다른 팁

읽는 것이 좋습니다 이것 4Guysfromrolla의 기사를 잘 이해해야하는 사람을위한 기사 DataGrid 웹 제어.

참고 :이 질문은 이미 답변되었습니다. 다른 사람이 궁금해하는 경우를 대비하여해야 할 일을 명확히하고 싶습니다.

DataSet ds;

//Get Data
using (SqlConnection connection = new SqlConnection(connectionString))
    {
        // Create the command and set its properties.
        SqlCommand command = new SqlCommand();
        command.Connection = connection;
        command.CommandText = "GetMyData";
        command.CommandType = CommandType.StoredProcedure;

        ds = connection.ExecuteDataSet();
    }
if(ds !=null && ds.Tables.Count > 0)
{
    dg.DataSource = ds.Tables[0];
    // disable autogeneration of columns
    dg.AutoGenerateColumns = false;
    //Hide unecessary columns
    dg.Columns["a3"].Visible = false;
    dg.Columns["a4"].Visible = false;
}

나는 전체 테이블을 바인딩 한 다음 다음과 같이 coulmns의 가시성을 설정합니다.

dgvMain.Columns[ColumnA3_Name].Visible = true;
dgvMain.Columns[ColumnA1_Name].Visible = false;

특정 열의 DatapRopertyName 속성을 항상 데이터 가능에 맞게 설정하려고 시도 할 수 있습니다. 그런 다음 해당 데이터 가능을 바인딩 소스에 바인딩하고 해당 빙원을 그리드에 바인딩하십시오.

DataGrid 열의 DataTable Match DatapRopertyNames의 열 이름 인 경우 데이터 그리드는 일치하는 열만 표시해야합니다.

내 예에서는 내 스트레인 Proc가 Simle과 같은 일을합니다.

ALTER PROCEDURE ps_Clients_Get
AS
BEGIN
    SELECT 
        convert(varchar(2000), path) as [Client Folder], 
        c.description as [Client Name],
        c.* 
    FROM Client c
END 
GO

그리고 내 C# 코드 :

using (DataTable dt = new DataTable())
{
    using (OdbcConnection cnDsn = new OdbcConnection(cmLocalTrackingDBDSNAME))
    {
        cnDsn.Open();
        using (OdbcCommand cmdDSN = new OdbcCommand())
        {
                  var _with1 = cmdDSN;
                  _with1.Connection = cnDsn;
                  _with1.CommandType = System.Data.CommandType.StoredProcedure;
                  _with1.CommandText = "{ CALL ps_Clients_Get }";
                  using (OdbcDataAdapter adapter = new OdbcDataAdapter())
                  {
                            dt.Locale = System.Globalization.CultureInfo.InvariantCulture;
                            adapter.SelectCommand = cmdDSN;
                            adapter.Fill(dt);
                            bindingSourceDataLocation.DataSource = dt;
                            dataGridViewDataLocation.AutoGenerateColumns = false;

                            dataGridViewDataLocation.DataSource = bindingSourceDataLocation;
                  }
         }
         cnDsn.Close();
    }
}

행운을 빕니다!

안녕하세요 다음 코드를 사용할 수 있습니다

//It represent name of column for which you want to select records
string[] selectedColumns = new[] { "a3", "a4" }; 

DataTable tableWithSelectedColumns = new DataView(dataset.Table["A"]).ToTable(false,  selectedColumns);

나는 이것을 시도했고 그것은 작동한다.

    Dim DT As DataTable = YourDT

    DGV.DataSource = dt
    DGV.AutoGenerateColumns = False

    Dim cc = DGV.ColumnCount

    For i = 0 To cc - 1
        DGV.Columns(i).Visible = False
    Next

    DGV.Columns("ColumnToShow").Visible = True
    DGV.Columns("ColumnToShow").Visible = True
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top