我有一个显示已加载数据的DataGrid。现在我的问题是,我不想将所有信息显示到DataGrid中。 e.i UserID,密码和Gander。我只知道它使用Gridview,我可以手动添加我想要的列,而不是通过编码。请帮帮我。
//method that save to d grid
public static List<ObjectUser> GetListAllUsers()
{
List<ObjectUser> oUserList = new List<ObjectUser>();
try
{
SqlConnection oConnection = new SqlConnection(_ConnectionString);
SqlCommand oCOmmand = new SqlCommand();
oCOmmand.Connection = oConnection;
DataSet oDs = new DataSet();
oCOmmand.CommandText = @"select u.* , c.Company
from UserEnrollment u
inner join [dbo].[Company] c on u.CompanyID = c.CompanyID";
SqlDataAdapter Adapter = new SqlDataAdapter(oCOmmand.CommandText, oCOmmand.Connection);
Adapter.Fill(oDs);
if (oDs.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in oDs.Tables[0].Rows)
{
ObjectUser oGet = new ObjectUser();
oGet.UserID = Convert.ToInt32(dr["UserID"].ToString());
oGet.UserName = dr["UserName"].ToString();
oGet.Password = dr["Password"].ToString();
oGet.FullNames = dr["FullNames"].ToString();
oGet.Surname = dr["Surname"].ToString();
oGet.Email = dr["EmailAddress"].ToString();
oGet.GenderID = Convert.ToInt32(dr["GenderID"].ToString());
oGet.CompanyName = dr["Company"].ToString();
oUserList.Add(oGet);
}
}
答案 0 :(得分:0)
创建一个属性,为您的数据网格保留隐藏列。
string [] arr = new string [2] {&#34; Column1&#34;,&#34; Column2&#34;};
现在在自动生成列事件中使用上面的arr,如代码所示
您可以使用datagrid的AutogeneratingColumns事件来实现上述功能。
您可以根据自己的要求使用以下任何一种代码
案例1:如果您有不希望显示的列列表,则可以在datagrid的自动生成列事件中使用以下代码
if(e != null)
{
if(arr.Contains(e.Column.Header))
{
e.Cancel = true;
//Here if you want to just hide the column and wants to generate the column
// e.Column.Visibility= Visibility.Collapsed;
}
}
案例2:如果您有要显示的列的列表,那么您可以在datagrid的自动生成列事件中使用以下代码
string[] VisibleColumns = //Here populate string array with list of columns you want to show
if (e != null)
{
if (!VisibleColumns.Contains(e.Column.Header))
{
e.Cancel = true;
}
}
答案 1 :(得分:0)
在设置datagridview的数据源后,只需隐藏您不想显示的列:
myDataGridView.Columns["UserID"].Visible = false;
myDataGridView.Columns["Password"].Visible = false;
myDataGridView.Columns["GenderID"].Visible = false;