能实现,但很麻烦
我一般是把相应数据提出来,在TextBox中修改
我一般是把相应数据提出来,在TextBox中修改
解决方案 »
- 动态加载的picturebox,为什么改变不了背景,请高手指点,谢谢!
- 字符串转DateTime类型?
- 两个线程同时读取同一个文件,并打印到控制台上,结果却出现问题了:一些内容丢失了。
- 关于网站CSS内联元素
- 怎样用线程加载treeview节点?
- SQL Server 2005 Express Edition 打包问题
- PasswordBox VS 密码查看器
- 一个清理回收站的代码 却运行不了 请问有啥问题
- 接口的不完全实现是抽象类?
- 请问各位高手,怎样可以使导出到excel的数字是数字型而不是字符型的。——心急人上
- 关于XmlDocument中SelectNodes的问题
- 怎么更新日期会出错??
http://blog.csdn.net/allenting/archive/2005/01/27/271073.aspx
datagrid行排序和筛选 :
http://blog.csdn.net/allenting/archive/2005/01/27/271072.aspx
datagrid的自定义和隐藏栏:
http://blog.csdn.net/allenting/archive/2005/01/27/271069.aspx
datagrid修改:
<form runat="server"> <ASP:DataGrid id="MyDataGrid" runat="server"
CellPadding = "2"
EditItemStyle-BackColor="yellow"
DataKeyField="ISBN"
OnEditCommand="DoItemEdit"
OnUpdateCommand="DoItemUpdate"
OnCancelCommand="DoItemCancel"
AutoGenerateColumns="False"> <Columns> <ASP:BoundColumn DataField="ISBN" HeaderText="ISBN" ReadOnly="True" /> <ASP:TemplateColumn HeaderText="Title">
<ItemTemplate>
<ASP:Label Text='<%# DataBinder.Eval(Container.DataItem, "Title") %>' runat="server" />
</ItemTemplate>
<EditItemTemplate>
<ASP:TextBox id="txtTitle" Size="60"
Text='<%# DataBinder.Eval(Container.DataItem, "Title") %>' runat="server" />
</EditItemTemplate>
</ASP:TemplateColumn> <ASP:BoundColumn DataField="PublicationDate" HeaderText="Published" /> <ASP:EditCommandColumn
EditText="Edit"
CancelText="Cancel"
UpdateText="Update" /> </Columns> </ASP:DataGrid></form><!---------------------------------------------------------------------------><script language="C#" runat="server"> void Page_Load(Object sender, EventArgs e)
{
if (!Page.IsPostBack)
BindDataGrid(); // create data set and bind to grid control
}
void DoItemEdit(Object objSource, DataGridCommandEventArgs objArgs)
{
lblSQL.Text = ""; // clear text from label that shows SQL statement // set the EditItemIndex property of the grid to this item's index
MyDataGrid.EditItemIndex = objArgs.Item.ItemIndex;
BindDataGrid(); // bind the data and display it
}
void DoItemUpdate(Object objSource, DataGridCommandEventArgs objArgs)
{
// get a reference to the title and publication date text boxes
TextBox objTitleCtrl = (TextBox)objArgs.Item.FindControl("txtTitle");
TextBox objPubDateCtrl = (TextBox)objArgs.Item.Cells[2].Controls[0]; // create a suitable SQL statement and execute it
string strSQL = "UPDATE Booklist SET Title='" + objTitleCtrl.Text + "', "
+ "PublicationDate='" + objPubDateCtrl.Text + "' "
+ "WHERE ISBN='" + MyDataGrid.DataKeys[objArgs.Item.ItemIndex] + "'";
ExecuteSQLStatement(strSQL); // set EditItemIndex property of grid to -1 to switch out of Edit mode
MyDataGrid.EditItemIndex = -1;
BindDataGrid(); // bind the data and display it
}
void DoItemCancel(Object objSource, DataGridCommandEventArgs objArgs)
{
// set EditItemIndex property of grid to -1 to switch out of Edit mode
MyDataGrid.EditItemIndex = -1;
BindDataGrid(); // bind the data and display it
}
void ExecuteSQLStatement(string strSQL)
{
// this is where the SQL statement would be executed against the
// original data source. In this example, we're simply displaying
// the statement in a Label on the page
lblSQL.Text = "<b>The SQL statement that would be executed is:</b><br />" + strSQL;
}
void BindDataGrid()
{
// get connection string from ..\global\connect-strings.ascx user control
string strConnect = ctlConnectStrings.OLEDBConnectionString; // create a SQL statement to select some rows from the database
string strSelect = "SELECT * FROM BookList WHERE ISBN LIKE '%18610025%'"; // create a variable to hold an instance of a DataReader object
OleDbDataReader objDataReader; try
{
// create a new Connection object using the connection string
OleDbConnection objConnect = new OleDbConnection(strConnect); // open the connection to the database
objConnect.Open(); // create a new Command using the connection object and select statement
OleDbCommand objCommand = new OleDbCommand(strSelect, objConnect); // execute the SQL statement against the command to get the DataReader
objDataReader = objCommand.ExecuteReader();
}
catch (Exception objError)
{
// display error details
outError.InnerHtml = "<b>* Error while accessing data</b>.<br />"
+ objError.Message + "<br />" + objError.Source + "<p />";
return; // and stop execution
} // set the DataSource property and bind the grid
MyDataGrid.DataSource = objDataReader;
MyDataGrid.DataBind();
}</script>
http://community.csdn.net/Expert/topic/3736/3736668.xml?temp=.3619806
好像不行、
其实.net的对象基本上是离散的、不像PB 几乎 DataWindow 就可以主宰一切了、
想打造 比较完美的操作比较
各种对象相互配合如:Grid //最终显示到客户的控件DataView //[相当于数据库中的试图]可以对数据进行排序、筛选等操作 一个DataTable 可对应多个 View
DataSet //[相当于一个数据库]
DataTable //相当于一个表
BindingManagerBase //管理绑定到相同数据源和数据成员的所有 Binding 对象。
如绑定后的数据现在所在的行, 还有行移动等一些很有用的事件都在在这里.当然进行一系列操作后还需要将数据更新回数据库
需要使用
[Ole|SQL|Oracle]Command //基本封装 sql 语句的操作
[Ole|SQL|Oracle]DataAdapter //使用4个commad 包括更新插入修改等数据库操作
MSDN 里有很多例子.下面就是一个ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbcon/html/vbwlkwalkthroughdisplayingdatafromsingletableinwindowsform.htm或在msdn 搜索 窗体中的简单数据访问下面有个例子(copy 后保存成 .eml文件用 Outlook Express 开就好了)Subject: Fw:
Date: Fri, 28 Jan 2005 23:26:00 +0800
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_NextPart_000_0003_01C50590.C12DF050"
X-Priority: 3
X-MSMail-Priority: Normal
X-Unsent: 1
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441This is a multi-part message in MIME format.------=_NextPart_000_0003_01C50590.C12DF050
Content-Type: text/plain;
charset="gb2312"
Content-Transfer-Encoding: base64DQotLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tIA0KU2VudDogRnJpZGF5LCBKYW51YXJ5IDI4
LCAyMDA1IDExOjI1IFBNDQoNCg==------=_NextPart_000_0003_01C50590.C12DF050
Content-Type: application/octet-stream;
name="Form3.rar"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="Form3.rar"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------=_NextPart_000_0003_01C50590.C12DF050--
http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp
在dataGrid的双击事件dataGrid1_DoubleClick中写如下代码 //第一列的数据
this.textBox1.Text = this.dataGrid1[this.dataGrid1.CurrentRowIndex,0].ToString();
//第二列的数据
this.textBox2.Text = this.dataGrid1[this.dataGrid1.CurrentRowIndex,1].ToString();
and so on~~ 然后双击dataGrid1的行首部分 即可取出dataGrid的单元格的值
{
string temp = dataGridView[Convert.ToInt32(dataGridView.CurrentCell.RowNumber),0].ToString();
DataAccess data = new DataAccess();
//判断是否点中的是CheckBox列,以保证其值正确更改
if(dataGridView.CurrentCell.ColumnNumber == 12)
{
//判断CheckBox单元格的值,并根据其值更新数据库
if(dataGridView[Convert.ToInt32(dataGridView.CurrentCell.RowNumber),12].ToString() == "False")
{
dataGridView[Convert.ToInt32(dataGridView.CurrentCell.RowNumber),12] = true;
string query_sql = "update accounttype set accflag = '1' where id = '" + temp + "'";
data.ExecuteSQL(query_sql);
}
else if(dataGridView[Convert.ToInt32(dataGridView.CurrentCell.RowNumber),12].ToString() == "True")
{
dataGridView[Convert.ToInt32(dataGridView.CurrentCell.RowNumber),12] = false;
string query_sql = "update accounttype set accflag = '0' where id = '" + temp + "'";
data.ExecuteSQL(query_sql);
}
}
else
{
//选中的不是CheckBox列就跳出此过程
return;
}
}
取值是一样的,你看看吧