不知如何获得rows的索引,就定了行的位,也就无法取得该行的列数据了
解决方案 »
- 求教c#中使用正则表达式问题
- 大家来帮帮忙啊
- 取出dataset中的某些数据
- 如何把一个 GBK的字符 转换成 unicode
- 如何在 repeater中使用 jquery 弹出 二进制图片啊???
- 如何写这样一个类
- [新手求大神指教]怎么讲数据库当中的某一个表的某一列当中的一个数据读取出来并赋值给一个变量
- 关于for语句的问题
- 谁有这么漂亮的界面代码哦?http://www.chinaui.com/ui_view.asp?id=483的界面该怎么实现呢?
- vs.net2003安装问题:已经安装了frontpage服务器扩展,为什么会提示没有安装FrontPage服务器扩展?
- 如何固定窗体的最小范围?
- 不安装oracle客户端如何使用OleDbConnection?
int nFlag = 0;//成员变量
//Button up函数
//初使应该是显示第一条记录
//现在判断记录
if(nFlag < nCoutn)
{
nFlag ++;
TextBox1.Text = DataTable.Row[nFlag][1].ToString();
TextBox2.Text = DataTable.Row[nFlag][2].ToString();
TextBox3.Text = DataTable.Row[nFlag][3].ToString();//也可以用循环来写吧
}
//Button down函数
//判断nFlag是否是第一条数据
if(nFlag > 0)
{
nFlag -- ;
TextBox1.Text = DataTable.Row[nFlag][1].ToString();
TextBox2.Text = DataTable.Row[nFlag][2].ToString();
TextBox3.Text = DataTable.Row[nFlag][3].ToString();
}
看看行不行?
DataTable.Rows[nFlag][1].ToString();
直接在这里面写的,也没编译,不知道能不能过!
赋值语句写的有问题?
用BindingManagerBase 吧
給你一段SDK上的代碼private void GetBindingManagerBase()
{
/* CustomersToOrders is the RelationName of a DataRelation.
Therefore, the list maintained by the BindingManagerBase is the
list of orders that belong to a specific customer in the
DataTable named Customers, found in DataSet1. */
myBindingManagerBase =
this.BindingContext[DataSet1, "Customers.CustomersToOrders"]; // Adds delegates to the CurrentChanged and PositionChanged events.
myBindingManagerBase.PositionChanged +=
new EventHandler(BindingManagerBase_PositionChanged);
myBindingManagerBase.CurrentChanged +=
new EventHandler(BindingManagerBase_CurrentChanged);
}private void BindingManagerBase_PositionChanged
(object sender, EventArgs e)
{
// Prints the new Position of the BindingManagerBase.
Console.Write("Position Changed: ");
Console.WriteLine(((BindingManagerBase)sender).Position);
}private void BindingManagerBase_CurrentChanged
(object sender, EventArgs e)
{
// Prints the new value of the current object.
Console.Write("Current Changed: ");
Console.WriteLine(((BindingManagerBase)sender).Current);
}private void MoveNext()
{
// Increments the Position property value by one.
myBindingManagerBase.Position += 1;
}private void MovePrevious()
{
// Decrements the Position property value by one.
myBindingManagerBase.Position -= 1;
}private void MoveFirst()
{
// Goes to the first row in the list.
myBindingManagerBase.Position = 0;
}private void MoveLast()
{
// Goes to the last row in the list.
myBindingManagerBase.Position =
myBindingManagerBase.Count - 1;
}
用BindingManagerBase 吧
給你一段SDK上的代碼请教一下:
System.Windows.Froms下的类,可以被Web应用程序.aspx调用吗?
......
protected System.Web.UI.WebControls.TextBox TextBoxn;
这样生成的
private void save_Click(object sender, System.EventArgs e)
{
if(TextBox1.Text!=""&&TextBox5.Text!=""&&TextBox2.Text!=""&&TextBox3.Text!=""&&TextBox4.Text!="")
{
for(int i=0;i<dataSet1.Tables[0].Rows.Count;i++)
{
int j=0;
dataSet1.Tables[0].Rows[i][j]=TextBox1.Text.ToString();
j++;
dataSet1.Tables[0].Rows[i][j]=TextBox2.Text.ToString();
j++;
dataSet1.Tables[0].Rows[i][j]=TextBox3.Text.ToString();
j++;
dataSet1.Tables[0].Rows[i][j]=TextBox4.Text.ToString();
}
}通过这个点击,把TextBoxN中的字符写进DataTable中去的现在我在想,DataTable初始后,Rows为空。即没有数据,那么Click()中的if addFlag<Rows.count是否成立?
<%@ Import NameSpace="System.Data"%>
<script runat="Server">
void btn_Click(object sender, EventArgs e)
{
DataSet dt = new DataSet();
if (ViewState["myDst"] != null)
dt = (DataSet)ViewState["myDst"];
DataTable tempTable = new DataTable();
DataColumn Column1=new DataColumn();
DataColumn Column2=new DataColumn();
DataColumn Column3=new DataColumn();
Column1.Caption="操作员名";
Column2.Caption="口令";
Column3.Caption="性别";
tempTable.Columns.Add(Column1);
tempTable.Columns.Add(Column2);
tempTable.Columns.Add(Column3);
dt.Tables.Add(tempTable);
DataRow newr=dt.Tables[0].NewRow();
dt.Tables[0].Rows.Add(newr);
ViewState["myDst"] = dt;
Response.Write(dt.Tables[0].Rows.Count.ToString());
dg1.DataSource = dt.Tables[0];
dg1.DataBind();
}</script>
<html>
<body>
<form runat="Server" id="form1">
<asp:button id="btn" runat="Server" text="btn" onclick="btn_Click"/>
<asp:DataGrid id="dg1" runat="Server"/>
</form>
</body>
</html>
void btn_Click(object sender, EventArgs e)
{
DataSet dt = new DataSet();
if (ViewState["myDst"] != null)
dt = (DataSet)ViewState["myDst"];
DataTable tempTable = new DataTable();
DataColumn Column1=new DataColumn();
DataColumn Column2=new DataColumn();
DataColumn Column3=new DataColumn();
Column1.Caption="操作员名";
Column2.Caption="口令";
Column3.Caption="性别";
tempTable.Columns.Add(Column1);
tempTable.Columns.Add(Column2);
tempTable.Columns.Add(Column3);
dt.Tables.Add(tempTable);
DataRow newr=dt.Tables[0].NewRow();
dt.Tables[0].Rows.Add(newr);
ViewState["myDst"] = dt;
Response.Write(dt.Tables[0].Rows.Count.ToString());
dg1.DataSource = dt.Tables[0];
dg1.DataBind();
}</script>
里面的方法就是button的click
那么我对dataSet和DataTable以及DataColumn的实例化是不是都应该放在一个button_Click()中去?
dt = (DataSet)ViewState["myDst"];
ViewState["myDst"] = dt;
能不能解释一下上面三句的用意呀???特别是ViewState,是什么?干什么用?
ViewState是一个监视页面及页面上组件变化的东西;
比如dt=(DataSet)ViewState["myDst"]就是指示ViewState监视dt的变化
并将所监视的页面及组件变化后的内容返回到该页面或组件上,并更新我的理解合适吗?
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace WebApp1
{
/// <summary>
/// addhander 的摘要说明。
/// </summary>
public class addhander : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.DropDownList DropDownList1;
protected System.Web.UI.WebControls.Label Label3;
protected System.Web.UI.WebControls.TextBox TextBox2;
protected System.Web.UI.WebControls.Label Label4;
protected System.Web.UI.WebControls.TextBox TextBox3;
protected System.Web.UI.WebControls.Label Label5;
protected System.Web.UI.WebControls.TextBox TextBox4;
protected System.Web.UI.WebControls.Button save;
protected System.Web.UI.WebControls.Button quit;
protected System.Web.UI.WebControls.Label report;
protected System.Web.UI.WebControls.Label Label6;
protected System.Web.UI.WebControls.TextBox TextBox5;
protected System.Web.UI.WebControls.Label Label7;
protected System.Data.DataSet dataSet1;
protected System.Data.DataTable tempTable;
protected System.Data.DataColumn Column1;
protected System.Data.DataColumn Column2;
protected System.Data.DataColumn Column3;
protected System.Data.DataColumn Column4;
protected System.Data.DataColumn Column5;
protected System.Data.DataColumn Column6;
protected System.Web.UI.WebControls.Button down;
protected System.Web.UI.WebControls.Button up;
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
int addFlag;
//int nFlag;
private void Page_Load(object sender, System.EventArgs e)
{// 在此处放置用户代码以初始化页面 }
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.dataSet1 = new System.Data.DataSet();
((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit();
this.up.Click += new System.EventHandler(this.up_Click);
this.down.Click += new System.EventHandler(this.down_Click);
this.save.Click += new System.EventHandler(this.save_Click);
//
// dataSet1
//
this.dataSet1.DataSetName = "NewDataSet";
this.dataSet1.Locale = new System.Globalization.CultureInfo("zh-CN");
this.Load += new System.EventHandler(this.Page_Load);
((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit(); }
#endregion private void save_Click(object sender, System.EventArgs e)
{
if(TextBox1.Text!=""&&TextBox5.Text!=""&&TextBox2.Text!=""&&TextBox3.Text!=""&&TextBox4.Text!="")
{
if (ViewState["myDst"] != null)
dataSet1=new DataSet();
dataSet1 = (DataSet)ViewState["myDst"];
tempTable=new DataTable();
Column1=new DataColumn();Column2=new DataColumn();Column3=new DataColumn();
Column4=new DataColumn();Column5=new DataColumn();Column6=new DataColumn();
Column1.Caption="操作员名"; Column2.Caption="口令"; Column3.Caption="性别";
Column4.Caption="年龄"; Column5.Caption="职务"; Column6.Caption="身份证号";
tempTable.Columns.Add(Column1); tempTable.Columns.Add(Column2);
tempTable.Columns.Add(Column3); tempTable.Columns.Add(Column4);
tempTable.Columns.Add(Column5); tempTable.Columns.Add(Column6);
dataSet1.Tables.Add(tempTable);
ViewState["myDst"] = dataSet1;
dataSet1.Tables[0].Rows.Add(new object[]{TextBox1.Text.ToString(),TextBox5.Text.ToString(),DropDownList1.SelectedItem.Text.ToString(),TextBox2.Text.ToString(),TextBox3.Text.ToString(),TextBox4.Text.ToString()});
DataGrid1.DataSource=dataSet1.Tables[0];
DataGrid1.DataBind();
}
}
else {report.Text="输入不完全!";}
} private void down_Click(object sender, System.EventArgs e)
{
int nCount = dataSet1.Tables[0].Rows.Count;//得到数据总记录数
addFlag = 0;//成员变量
//Button up函数
//初使应该是显示第一条记录
//现在判断记录
if(addFlag < nCount-1)
{
TextBox1.Text = dataSet1.Tables[0].Rows[addFlag][0].ToString();
TextBox2.Text = dataSet1.Tables[0].Rows[addFlag][1].ToString();
TextBox3.Text = dataSet1.Tables[0].Rows[addFlag][2].ToString();//也可以用循环来写吧
}addFlag++;
} private void up_Click(object sender, System.EventArgs e)
{
int nCount = dataSet1.Tables[0].Rows.Count;//得到数据总记录数
addFlag = nCount-1;//成员变量
//Button up函数
//初使应该是显示第一条记录
//现在判断记录
if(addFlag >0)
{
TextBox1.Text = dataSet1.Tables[0].Rows[addFlag][0].ToString();
TextBox2.Text = dataSet1.Tables[0].Rows[addFlag][1].ToString();
TextBox3.Text = dataSet1.Tables[0].Rows[addFlag][2].ToString();//也可以用循环来写吧
}addFlag--;
}
}
}
dataSet1=new DataSet();
dataSet1 = (DataSet)ViewState["myDst"];>>>>>>>>>>>>>>>>>>>>>>>>>这里不对,应该这样。。dataSet1=new DataSet();if (ViewState["myDst"] != null)
dataSet1 = (DataSet)ViewState["myDst"];
我只能生搬硬套,实在是理解不了
才多次给大侠找麻烦
大侠能不能就实现这个效果结合viewstate讲讲实现的原理呢?
比如,你说dataSet1=另一个dataSet,那么究竟是在页面中新产生了一个dataset对象呢?
还是........笨人不能领会
SqlDataAdapter da = new SqlDataAdapter("select * from class",conn);//conn为与数据库连接DataSet ds = new DataSet();da.Fill(YourDataSet,"TableName");
DataGrid1.Visible = true;
// Display the data
DataGrid1.DataSource = ds.Tables["TableName"];
DataGrid1.DataBind();