然后我想使用此代码解析为secondform iam
string asscode = gridView1.GetFocusedRowCellValue("AsstCode").ToString();
Assistant assist = new Assistant(asscode);
assist.show();
解析时,字符串是一个变量,所以我需要拆分它们。我使用此split
来打破它们
string ass_code;
public Assistant(string z) //this is form 2
{
InitializeComponent();
ass_code = z;
}
以第二种形式我已经从另一个gridview.datasource
设置query
,因此我需要使用此代码将自定义列添加到gridview
,iam
private void button1_Click(object sender, EventArgs e)
{
string[] names = ass_code.Split(';');
gridView1.BeginUpdate();
DataColumn col = dt.Columns.Add("X", typeof(Boolean));
GridColumn column = gridView1.Columns.AddVisible(col.ColumnName);
column.Caption = col.Caption;
column.Name = col.ColumnName;
gridView1.EndUpdate();
}
对于secondform接口,gridview显示此
我想问的是
column x
asscode
和0110300
进行0110164
检查,并检查其他值。正如您在column x
上看到的那样,它的颜色为gray
颜色不是1 or 0
当我尝试
时 //string[] names = ass_code.Split(';');
//foreach (string xy in names)
//{
// MessageBox.Show(xy);
//}
它表明第一个是0110159
,但第二个字符串0110164
在第一个字符上有空格字符串。 <<因为这用于list 1
更新:
我使用此代码,但只检查0110300
,因为它将0110159
设置回false
foreach (string x in names)
{
string[] names = ass_code.Split(';');
for (int i = 0; i < gridView1.RowCount; i++)
{
string xg = x.Trim();
string g = gridView1.GetDataRow(i)["code"].ToString().Trim();
if (g == xg)
{
gridView1.SetRowCellValue(i, "Dada", true);
}
else
{
gridView1.SetRowCellValue(i, "Dada", false);
}
}
}
UPDATE2
答案 0 :(得分:0)
你做了很多便利的东西。 Devexpress Grid使用起来非常简单:
var data = //GETYOURDATA
gridControl.DataSource = data;
这会将您的数据填充到网格中。您甚至不需要创建任何列等。如果您现在想要一个值,则不应该使用GetRowCellValue();
尝试使用您的数据源。
var actualRow = gridView.GetFocusedRow() as DataRowView;
MessageBox(actualRow["code"]); //Will print your code from code column
您需要了解的是,您的DataSource是真实的来源,GridView只显示此数据。如果您将数据存储在List<T>
。
实施例
public class Employee()
{
public int Code{get;set}
public string Name{get;set;}
public bool X {get{return Code == 0110300}}
public static List<Employee> ReadAll(){//Get your data};
}
public class MyForm() : XtraForm
{
var data = Employee.ReadAll();
gridControl.DataSource = data;
//Access Employee code
Employee emp = gridView.GetFocusedRow() as Employee;
MessageBox.Show(emp.Code.ToString());
}
<强>更新强>
使用@Rupesh中的第二种方法删除空格。并使用Equals进行字符串比较。进一步设置你的GridColumn&#39; X&#39;到column.UnboundType = DevExpress.Data.UnboundColumnType.Bool;
以确保DevExpress不会覆盖您的数据。
<强> UPDATE-2 强>
var names = ass_code.Split(';').Select(p => p.Trim()).ToList();
for (int i = 0; i < gridView1.RowCount; i++)
{
string g = gridView1.GetDataRow(i)["code"].ToString().Trim();
if (names.Contains(g))
gridView1.SetRowCellValue(i, "Dada", true);
else
gridView1.SetRowCellValue(i, "Dada", false);
}
答案 1 :(得分:0)
如果前导/尾随空格是问题的原因,那么您可以通过两种方式进行:
第一种方式:
IndexByNonUId
第二种方式:
string[] names = ass_code.Split(';');
// remove leading / trailing spaces
for (int i = names.Length-1; i >= 0; i-- )
names[i] = names[i].Trim();