在datagrid 中显示a.id,a.code,b.name,a.else a与b分别是两个不同的表,
两个表的条件是a.id=b.id
我的要求是直接在datagrid的中操作(增加,修改,删除),但只对a表中的数据进行操作,如何实现。
还有一点我想问的是,在新闻网站,新闻是怎么排版与保存的。
两个表的条件是a.id=b.id
我的要求是直接在datagrid的中操作(增加,修改,删除),但只对a表中的数据进行操作,如何实现。
还有一点我想问的是,在新闻网站,新闻是怎么排版与保存的。
解决方案 »
- C#连接数据库
- vs2005 c# 如何使用lambda表达式??
- 现金求助,怎样做wince下UI的界面特效(图片重叠透明滑动效果)
- PostMessage为什么在游戏中摸拟按F1键无效?(重分相谢)
- C#中获取FormView EditItemTemplate里面的各值
- c# 日期减一天,有点不明白
- C# 2005怎样去掉按钮上的焦点框
- 自动生成SQL语句所遇到的奇怪难题,谁能解决
- 我的数据库怎么连不上?这是什么问题?问题小小,难死我了!
- 大哥大姐,看到了一定要帮忙哈!小弟先谢了,急啊!
- "未将对象引用设置到对象的实例"的错误,帮俺看看,谢了
- 再问一题:如何区分鼠标点击的是treeview节点的+或-,还是点击的节点的文字部分(或者叫标签,就是有文字的部分)
你的问题这里有很多答案。
{
private DataView ChoiceDataViewSource;
private string ChoiceDisplayField;
private string ChoiceValueField;
public DataGridTextBindColumn(DataView ChoiceDataViewSource,string ChoiceDisplayField,string ChoiceValueField) : base()
{
this.ChoiceDataViewSource =ChoiceDataViewSource;
this.ChoiceDisplayField =ChoiceDisplayField;
this.ChoiceValueField =ChoiceValueField;
//myTextBox.DataBindings .Add (new System .Windows .Forms .Binding ("Text",ChoiceDataViewSource,BindField));
}
protected override void Abort(int rowNum)
{
Invalidate();
} protected override bool Commit
(CurrencyManager dataSource, int rowNum)
{
Invalidate();
return true;
} protected override void Edit(
CurrencyManager source,
int rowNum,
Rectangle bounds,
bool readOnly,
string instantText,
bool cellIsVisible)
{ }
protected int Find(System.Object value)
{
int int1;
int int2;
int2=ChoiceDataViewSource.Count ;
if (int2<=0)
{
return -1;
}
for (int1=0;int1<int2;int1++)
{
if (ChoiceDataViewSource[int1][ChoiceValueField ].ToString ().Trim ()==value.ToString ().Trim ())
{
return int1;
}
}
return -1;
} protected override Size GetPreferredSize(
Graphics g,
object value)
{
return new Size(100, 4);
} protected override int GetMinimumHeight()
{
return 4;
} protected override int GetPreferredHeight(Graphics g,
object value)
{
return 4;
} protected override void Paint(Graphics g,
Rectangle bounds,
CurrencyManager source,
int rowNum)
{
Paint(g, bounds, source, rowNum, false);
}
protected override void Paint(
Graphics g,
Rectangle bounds,
CurrencyManager source,
int rowNum,
bool alignToRight)
{
Paint(
g,bounds,
source,
rowNum,
Brushes.Red,
Brushes.Blue,
alignToRight);
}
protected override void Paint(
Graphics g,
Rectangle bounds,
CurrencyManager source,
int rowNum,
Brush backBrush,
Brush foreBrush,
bool alignToRight)
{
object value=GetColumnValueAtRow(source, rowNum);
int int1=Find (value);
string display="";
if (int1>=0)
{
display=this.ChoiceDataViewSource [int1][ChoiceDisplayField].ToString ();
}
//string display=GetColumnValueAtRow(source, rowNum).ToString ();//需要增加一段程序寻求对应项
Rectangle rect = bounds;
g.FillRectangle(backBrush,rect);
rect.Offset(0, 2);
rect.Height -= 2;
g.DrawString(display,
this.DataGridTableStyle.DataGrid.Font,
foreBrush, rect);
} protected override void SetDataGridInColumn(DataGrid value)
{
}
}
{
public DataGrid_ComboBox( ):base()
{
}
public DataView DataGridDataView=null;
//列性质
public int ColumnNumber=0;//整个列数
public string[] ColumnDisplayType=null;//每列类型:Text、Bool、ComboBox
public int[] ColumnComboBoxCol=null;//为ComboBox类型时所指示的ComboBox列匹配项;
public string[] ColumnMappingName=null;//每列匹配的字段名
internal bool[] ColumnReadOnly=null;//每列的只读性
internal string[] ColumnHeaderText=null;//每列标题
internal int[] ColumnWidth=null;//每列宽度;
public int ComboBoxNumber=0;
public DataView[] ComboBoxDataView=null;
public string[] ComboBoxDisplayMember=null;
public string[] ComboBoxValueMember=null;
public void Combination( )
{
int int1;
//base.DataSource =DataGridDataView;
base.SetDataBinding (DataGridDataView,"");
System.Windows .Forms.DataGridTableStyle t_显示表;
t_显示表=new DataGridTableStyle (); System.Windows .Forms .DataGridColumnStyle[] t_显示列;
t_显示列=new System .Windows .Forms .DataGridColumnStyle [ColumnNumber]; for (int1=0;int1<ColumnNumber;int1++)
{
switch (ColumnDisplayType[int1])
{
case "Text":t_显示列[int1]=new DataGridTextBoxColumn ();
break;
case "Bool":t_显示列[int1]=new DataGridBoolColumn ();
break;
case "ComboBox":t_显示列[int1]=new DataGridComboBoxColumn (ComboBoxDataView[ColumnComboBoxCol[int1]],ComboBoxDisplayMember[ColumnComboBoxCol[int1]],ComboBoxValueMember[ColumnComboBoxCol[int1]]);
break;
case "TextBind":t_显示列[int1]=new DataGridTextBindColumn (ComboBoxDataView[ColumnComboBoxCol[int1]],ComboBoxDisplayMember[ColumnComboBoxCol[int1]],ComboBoxValueMember[ColumnComboBoxCol[int1]]);
break;
case "ComboBoxTableView":t_显示列[int1]=new DataGridComboBoxTableViewColumn (ComboBoxDataView[ColumnComboBoxCol[int1]],ComboBoxDisplayMember[ColumnComboBoxCol[int1]],ComboBoxValueMember[ColumnComboBoxCol[int1]]);
break;
case "TreeView":t_显示列[int1]=new DataGridTreeViewColumn (ComboBoxDataView[ColumnComboBoxCol[int1]],ComboBoxDisplayMember[ColumnComboBoxCol[int1]],ComboBoxValueMember[ColumnComboBoxCol[int1]]);
break;
default:t_显示列[int1]=new DataGridTextBoxColumn ();
break;
}
t_显示表.GridColumnStyles .Add (t_显示列[int1]);
}
base.TableStyles .Add (t_显示表);
base.TableStyles [0].MappingName =DataGridDataView.Table .TableName ;
for (int1=0;int1<ColumnNumber;int1++)
{
t_显示列[int1].MappingName =ColumnMappingName[int1];
t_显示列[int1].HeaderText =ColumnHeaderText [int1];
t_显示列[int1].ReadOnly =ColumnReadOnly [int1];
t_显示列[int1].Width =ColumnWidth[int1];
}
}
}