不知如何获得rows的索引,就定了行的位,也就无法取得该行的列数据了

解决方案 »

  1.   

    int nCount = DataTable.Row.Count;//得到数据总记录数
    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();
    }
    看看行不行?
      

  2.   

    DataTable.Row[nFlag][1].ToString();换成
    DataTable.Rows[nFlag][1].ToString();
    直接在这里面写的,也没编译,不知道能不能过!
      

  3.   

    能编译通过,但运行后,TextBox中没有变化
      

  4.   

    怎么会,你单步看看TEXTBOX里面的值,看是不是DATATABLE值都是一样还是
    赋值语句写的有问题?
      

  5.   

    真的不行呀,哥哥你如果有vs.net#环境,你亲自试一下嘛
      

  6.   

    是要數據導航嗎。
    用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;
    }
      

  7.   

    急寻.net项目合作人,福州市的.NET开发人员请与我联系,0591-13055291676 [email protected]
      

  8.   

    楼上zhaolee(昭昭穆穆):是要數據導航嗎。
    用BindingManagerBase 吧
    給你一段SDK上的代碼请教一下:
    System.Windows.Froms下的类,可以被Web应用程序.aspx调用吗?
      

  9.   

    啊呀呀。看錯了。是BS下的呀。BS下不會呀。查查SDK吧。
      

  10.   

    你的TextBox.Text是自己写的 还是通过Table 中生成的
      

  11.   

    protected System.Web.UI.WebControls.TextBox TextBox1;
    ......
    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是否成立?
      

  12.   

    aiqinbird(爱琴鸟) 把你的邮箱告诉我,我把全代码发给你,你试一下好吗?谢谢
      

  13.   

    <%@ Page Language="C#"%>
    <%@ 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>
      

  14.   

    您只给出了html部分,aspx.cs部分呢?
      

  15.   

    <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>
    里面的方法就是button的click
      

  16.   

    你整个复制.存为.aspx,然后直接运行就可以
      

  17.   

    大侠,再问一下,如果我要把你写在.aspx中的功能生成在项目中的.aspx.cs中,
    那么我对dataSet和DataTable以及DataColumn的实例化是不是都应该放在一个button_Click()中去?
      

  18.   

    if (ViewState["myDst"] != null)
    dt = (DataSet)ViewState["myDst"];
    ViewState["myDst"] = dt;
    能不能解释一下上面三句的用意呀???特别是ViewState,是什么?干什么用?
      

  19.   

    ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemWebUIControlClassViewStateTopic.htm
      

  20.   

    可不可以这样理解:
    ViewState是一个监视页面及页面上组件变化的东西;
    比如dt=(DataSet)ViewState["myDst"]就是指示ViewState监视dt的变化
    并将所监视的页面及组件变化后的内容返回到该页面或组件上,并更新我的理解合适吗?
      

  21.   

    运行后,点击save按钮后,为什么还是报错:
    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--;
    }
    }
    }
      

  22.   

    if (ViewState["myDst"] != null)
       dataSet1=new DataSet();
       dataSet1 = (DataSet)ViewState["myDst"];>>>>>>>>>>>>>>>>>>>>>>>>>这里不对,应该这样。。dataSet1=new DataSet();if (ViewState["myDst"] != null)
       dataSet1 = (DataSet)ViewState["myDst"];
      

  23.   

    能不能说说dataSet1=(DataSet)ViewState["myDst"]的作用?
    我只能生搬硬套,实在是理解不了
    才多次给大侠找麻烦
      

  24.   

    赋值呀。。(DataSet)ViewState["myDst"];也相当一个DataSetdataSet1 = 另一个dataSet
      

  25.   

    没得法,网上找了些关于viewstate的文章,一时也没看明白
    大侠能不能就实现这个效果结合viewstate讲讲实现的原理呢?
    比如,你说dataSet1=另一个dataSet,那么究竟是在页面中新产生了一个dataset对象呢?
    还是........笨人不能领会
      

  26.   

    为什么运行后,DataGrid1始终只能显示一条信息呢?可我已经输入并保存到DataTable中N条了??????
      

  27.   

    改成  
    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();
      

  28.   

    上面的("select * from class",conn);中的class为表名
      

  29.   

    class为表名?什么表?database-->table吗?这个页面要的效果就是没有连接到任何数据库去的一个dataSet,该dataSet中的DataTable中数据也不需要且不能从数据库中取得数据,而是通过页面上的一系列输入产生的数据。你再帮忙想想?