modernsky2003

DATASET读取XML

  private void Button1_Click(object sender, System.EventArgs e)
  {
   SqlConnection cn=new SqlConnection("server=.;database=pubs;uid=sa;pwd=");  
   SqlDataAdapter da=new SqlDataAdapter("select * from titles",cn);
   DataSet ds=new DataSet();
   da.Fill(ds);
   ds.WriteXml(Server.MapPath("titles.xml"));
  }

  private void Button2_Click(object sender, System.EventArgs e)
  {
//   FileStream myfs=new FileStream(Server.MapPath("titles.xml"),FileMode.Open,FileAccess.Read);//使用FileStream对象打开xml文件
//   StreamReader myreader=new StreamReader(myfs);//将StreamReader对象附加到FileStream对象上,可以将FileStream对象中的xml文件读取到StreamReader对象中
//   DataSet ds=new DataSet();//定义数据集,它能够读取和存储xml,从数据库读取数据和从xml读取数据没有区别
//   ds.ReadXml(sr);//DataSet对象的ReadXml方法可以从StreamReader对象中读取xml数据
//   dgMyGrid.DataSource=ds;//将xml数据读入到DataSet后,sql数据和xml数据之间没有区别,DataGrid以同样方法绑定至DataSet
//   dgMyGrid.DataBind();

   DataSet ds=new DataSet();
   ds.ReadXml(Server.MapPath("titles.xml"));
   dgMyGrid.DataSource=ds;
   dgMyGrid.DataBind();
  }


    //Panel 横向滚动,纵向自动扩展
    //<asp:panel  style="overflow-x:scroll;overflow-y:auto;"></asp:panel>
总结:
在网络状态较好的情况下,Redirect(url)方法效率最高!!
Server.Transfer方法和Server.Execute方法最灵活!!
Server.Execute方法占用资源最多.

 private void Button1_Click(object sender, System.EventArgs e)
  {
   Label2.Text="You choose:<b>";
   foreach(ListItem lst in CheckBoxList1.Items)
   {
    if(lst.Selected==true)
    {
     Label2.Text+="<br>" + lst.Text;
    }
   }
   Label2.Text+="</b>";

   for(int i=0;i<this.CheckBoxList1.Items.Count;i++)
   {
    if(this.CheckBoxList1.Items[i].Selected == true)
    {
     Label3.Text+="<br>" + CheckBoxList1.Items[i].Text;
    }
   }
   Label3.Text+="</b>";
  }

  private void CheckBox1_CheckedChanged(object sender, System.EventArgs e)
  {
   foreach(object control in Form1.Controls)
   {
    if(control is CheckBox)
    {
     CheckBox checkbox=control as CheckBox;
     checkbox.Checked=CheckBox1.Checked;
    }
   }
  }
 private void Page_Load(object sender, System.EventArgs e)
  {
   if(!this.IsPostBack)
   {
    ArrayList ary=new ArrayList();
    ary.Add("c");
    ary.Add("c++");
    ary.Add("c#");
    ary.Add("asp");
    ary.Add("asp.net");
    ary.Add("vb");
    ary.Add("winform");
    ary.Add("java");
    ary.Add("j2ee");
    ListBox1.DataSource=ary;
    ListBox1.DataBind();

    ListBox1.SelectionMode=ListSelectionMode.Multiple;
    ListBox1.AutoPostBack=false;
    ListBox2.SelectionMode=ListSelectionMode.Multiple;
    ListBox2.AutoPostBack=false;
   }
  }

  private void Button1_Click(object sender, System.EventArgs e)
  {   
   for(int i=0;i<ListBox1.Items.Count;i++)
    ListBox2.Items.Add(ListBox1.Items[i].Text);
   ListBox1.Items.Clear();
  }

  private void Button4_Click(object sender, System.EventArgs e)
  {
   for(int i=0;i<ListBox2.Items.Count;i++)
    ListBox1.Items.Add(ListBox2.Items[i].Text);
   ListBox2.Items.Clear();
  }

  private void Button2_Click(object sender, System.EventArgs e)
  {
   int i=0;
   while(i<=ListBox1.Items.Count-1)
   {
    if(ListBox1.Items[i].Selected==true)
    {
     ListBox2.Items.Add(ListBox1.Items[i].Text);
     ListBox1.Items.RemoveAt(i);
    }
    else
    {
     i++;
    }
   }
  }

  private void Button3_Click(object sender, System.EventArgs e)
  {
   int i=0;
   while(i<=ListBox2.Items.Count-1)
   {
    if(ListBox2.Items[i].Selected==true)
    {
     ListBox1.Items.Add(ListBox2.Items[i].Text);
     ListBox2.Items.RemoveAt(i);
    }
    else
    {
     i++;
    }
   }
  }


 private void Page_Load(object sender, System.EventArgs e)
  {
   if(!this.IsPostBack)
   {
    course();
    site();
    hashTable();
   }
  }

  void course()
  {
   Hashtable ht=new Hashtable();
   ht.Add("c","s1课程");
   ht.Add("c++","s2课程");
   ht.Add("c#","y2课程");
    
   RadioButtonList1.DataSource=ht;
   RadioButtonList1.DataValueField="key";
   RadioButtonList1.DataTextField="value";
   RadioButtonList1.DataBind();
   RadioButtonList1.AutoPostBack=true;
  }

  void site()
  {
   Hashtable site=new Hashtable();
   site.Add("sohu.gif","搜狐");
   site.Add("sina.gif","新浪");
   site.Add("netease.gif","网易");
   site.Add("yahoo.jpg","雅虎");
   RadioButtonList2.DataSource=site;
   RadioButtonList2.DataValueField="key";
   RadioButtonList2.DataTextField="value";
   RadioButtonList2.DataBind();
   RadioButtonList2.AutoPostBack=true;
  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.RadioButtonList2.SelectedIndexChanged += new System.EventHandler(this.RadioButtonList2_SelectedIndexChanged);
   this.RadioButtonList1.SelectedIndexChanged += new System.EventHandler(this.RadioButtonList1_SelectedIndexChanged);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  private void RadioButtonList1_SelectedIndexChanged(object sender, System.EventArgs e)
  {
   Label2.Text="You choosed:" +RadioButtonList1.SelectedItem.Text+"——"+RadioButtonList1.SelectedItem.Value;
  }

  private void RadioButtonList2_SelectedIndexChanged(object sender, System.EventArgs e)
  {
   this.Image1.ImageUrl =Server.MapPath("")+@"\image\"+RadioButtonList2.SelectedItem.Value;
  }

  void hashTable()
  {
   Hashtable ht=new Hashtable();
   ht.Add("c","s1课程");
   ht.Add("c++","s2课程");
   ht.Add("c#","y2课程");

   IDictionaryEnumerator ide=ht.GetEnumerator();
   while(ide.MoveNext())
   {
    ListBox1.Items.Add(ide.Key.ToString());
    ListBox2.Items.Add(ide.Value.ToString());
   }
  }

 

  private void Button8_Click(object sender, System.EventArgs e)
  {
   TreeNode nodeRoot=new TreeNode();
   nodeRoot.Target="root";
   nodeRoot.Text="老祖宗";
   nodeRoot.ImageUrl=Server.MapPath("")+@"\image\book1.ico";
   nodeRoot.ExpandedImageUrl=Server.MapPath("")+@"\image\book2.ico";
   nodeRoot.SelectedImageUrl=Server.MapPath("")+@"\image\book2.ico";
   MyTree.Nodes.Add(nodeRoot);
  }

  private void Button1_Click(object sender, System.EventArgs e)
  {
   TreeNode nodeSelect=MyTree.GetNodeFromIndex(MyTree.SelectedNodeIndex);
   TreeNode nodeAdd=new TreeNode();
   nodeAdd.Text=nodeSelect.Text+"的崽";
   nodeSelect.Nodes.Add(nodeAdd);
  }

  private void Button2_Click(object sender, System.EventArgs e)
  {
   TreeNode nodeDelete=MyTree.GetNodeFromIndex(MyTree.SelectedNodeIndex);
   nodeDelete.Remove();
  }

  private void Button3_Click(object sender, System.EventArgs e)
  {   
   MyTree.Nodes.Clear();
  }

  private void Button4_Click(object sender, System.EventArgs e)
  {
   TreeNode nodeUpdate=MyTree.GetNodeFromIndex(MyTree.SelectedNodeIndex);
   nodeUpdate.Text+="(已经被修改)";
  }

  private void Button5_Click(object sender, System.EventArgs e)
  {
   TreeNode nodeCut=MyTree.GetNodeFromIndex(MyTree.SelectedNodeIndex);
   Session["cut"]=nodeCut;
   nodeCut.Remove();
  }

  private void Button6_Click(object sender, System.EventArgs e)
  {
   TreeNode nodeSelect=MyTree.GetNodeFromIndex(MyTree.SelectedNodeIndex);
   TreeNode nodePaste=(TreeNode)Session["cut"];
   nodeSelect.Nodes.Add(nodePaste);
  }

  private void Button7_Click(object sender, System.EventArgs e)
  {  
   ListBox1.Items.Clear();
   GetAllNodeText(MyTree.Nodes);
  }

  void GetAllNodeText(TreeNodeCollection tnc)
  {
   foreach(TreeNode node in tnc)
   {
    if(node.Nodes.Count!=0)
     GetAllNodeText(node.Nodes);
    ListBox1.Items.Add(node.Text);
   }
  }


  private void Button3_Click(object sender, System.EventArgs e)
  {
   
   // Generate the Label controls.
            
   int numlabels = Int32.Parse(DropDown1.SelectedItem.Value);
            
   for (int i=1; i<=numlabels; i++)
   {
    Label l = new Label();
    l.Text = "Label" + (i).ToString();
    l.ID = "Label" + (i).ToString();
    Panel4.Controls.Add(l);
    Panel4.Controls.Add(new LiteralControl("<br>"));
   }
 
   // Generate the Textbox controls.
            
   int numtexts = Int32.Parse(DropDown2.SelectedItem.Value);
            
   for (int i=1; i<=numtexts; i++)
   {
    TextBox t = new TextBox();
    t.Text = "TextBox" + (i).ToString();
    t.ID = "TextBox" + (i).ToString();
    Panel4.Controls.Add(t);
    Panel4.Controls.Add(new LiteralControl("<br>"));
   }
  }
动态加载TABLE控件
 public class TableControls : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.Table Table1;
  protected System.Web.UI.WebControls.Button Button2;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   for(int i=0;i<count;i++)
   {
    Add();
   }
  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Button2.Click += new System.EventHandler(this.Button2_Click);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  static int count;

  void Add()
  {
   TextBox tb=new TextBox();
   TableCell tc=new TableCell();
   tc.Controls.Add(tb);
   TableRow tr=new TableRow();
   tr.Cells.Add(tc);
   Table1.Rows.Add(tr);
  }

  private void Button2_Click(object sender, System.EventArgs e)
  {
   Add();
   count++;
  }
 }

 private void Button1_Click(object sender, System.EventArgs e)
  {
   for (int i = 0; i <4; i++)
   {
    TableRow tempRow = new TableRow();
    for (int j = 0; j < 4; j++)
    {
     TableCell tempCell = new TableCell();
     tempCell.Text = "Position(" + i + "," + j + ")";
     
     if (CheckBox1.Checked==true)
     {
      tempCell.BorderStyle=BorderStyle.Inset;
      tempCell.BorderWidth=Unit.Pixel(1);
     }

     tempRow.Controls.Add(tempCell);
    }
    Table1.Rows.Add(tempRow);
   }
  
  }

  private void Button2_Click(object sender, System.EventArgs e)
  {
   for (int i = 0; i <4; i++)
   {
    TableRow tempRow = new TableRow();
    for (int j = 0; j < 4; j++)
    {
     TableCell tempCell = new TableCell();
     Label tempLabel=new Label();
     tempLabel.Text = "Position(" + i + "," + j + ")";
     tempCell.Controls.Add(tempLabel);

     Image img=new Image();
     img.ImageUrl=Server.MapPath("") + @"\image\"+(j+1)+".jpg";
     tempCell.Controls.Add(img);

     if (CheckBox1.Checked==true)
     {
      tempCell.BorderStyle=BorderStyle.Inset;
      tempCell.BorderWidth=System.Web.UI.WebControls.Unit.Pixel(1);
     }

     tempRow.Controls.Add(tempCell);
    }
    Table1.Rows.Add(tempRow);
   }
  }

  private void Button3_Click(object sender, System.EventArgs e)
  {
   // Create more rows for the table.
   for (int i = 0; i < 4; i++)
   {
    TableRow tempRow = new TableRow();
    for (int j = 0; j < 4; j++)
    {
     TableCell tempCell = new TableCell();
     Label tempLabel=new Label();
     tempLabel.Text = "Position(" + i + "," + j + ")";
     tempCell.Controls.Add(tempLabel);

     Image img=new Image();
     img.ImageUrl=Server.MapPath("") + @"\image\"+(j+1)+".jpg";
     tempCell.Controls.Add(img);

     if (CheckBox1.Checked==true)
     {
      tempCell.BorderStyle=BorderStyle.Inset;
      tempCell.BorderWidth=Unit.Pixel(1);
     }

     tempRow.Controls.Add(tempCell);
    }
    Table1.Rows.Add(tempRow);
   }

   // Create a TableItemStyle object that can be set as the default style for all cells in the table.
   TableItemStyle tableStyle = new TableItemStyle();
   tableStyle.HorizontalAlign = HorizontalAlign.Center;
   tableStyle.VerticalAlign = VerticalAlign.Middle;
   tableStyle.Width = Unit.Pixel(100);

   // Apply the TableItemStyle to all rows in the table.
   foreach (TableRow r in Table1.Rows)
    foreach (TableCell c in r.Cells)
     c.ApplyStyle(tableStyle);

   // Create a header for the table.
   TableHeaderCell header = new TableHeaderCell();
   header.RowSpan = 1;
   header.ColumnSpan = 4;
   header.Text = "Table of (x,y) Values";
   header.Font.Bold = true;
   header.BackColor =System.Drawing.Color.CornflowerBlue;
   header.HorizontalAlign = HorizontalAlign.Center;
   header.VerticalAlign = VerticalAlign.Middle;

   // Add the header to a new row.
   TableRow headerRow = new TableRow();
   headerRow.Cells.Add(header);

   // Add the header row to the table.
   Table1.Rows.AddAt(0, headerRow); 
  }     
 }
}

 


namespace ContainerControl
{
 /// <summary>
 /// WebForm8 的摘要说明。
 /// </summary>
 public class TableSave : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.Table Table1;
  protected System.Web.UI.WebControls.Label Label1;
  protected System.Web.UI.WebControls.Button Button1;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   for(int i=0;i<count;i++)
   {
    TextBox tb=new TextBox();
    Button bt=new Button();
    bt.Text=i.ToString();
    bt.Click+=new EventHandler(bt_Click);

    TableCell tc=new TableCell();
    tc.Controls.Add(tb);
    tc.Controls.Add(bt);

    TableRow tr=new TableRow();
    tr.Cells.Add(tc);

    Table1.Rows.Add(tr);

   }
  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Button1.Click += new System.EventHandler(this.Button1_Click);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  static int count;

  private void Button1_Click(object sender, System.EventArgs e)
  {
   TextBox tb=new TextBox();
   Button bt=new Button();
   bt.Text=count.ToString();
   bt.Click+=new EventHandler(bt_Click);

   TableCell tc=new TableCell();
   tc.Controls.Add(tb);
   tc.Controls.Add(bt);

   TableRow tr=new TableRow();
   tr.Cells.Add(tc);

   Table1.Rows.Add(tr);

   count++;
  }

  private void bt_Click(object sender, EventArgs e)
  {
   Button btt=sender as Button;
   int index=int.Parse(btt.Text);
   TextBox t= Table1.Rows[index].Cells[0].Controls[0] as TextBox;
   Label1.Text=t.Text;
  }
 }


 public class TableShowImage : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.Table Table1;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   TableCell tc1=new TableCell();
   tc1.Text="图片";
   
   TableCell tc2=new TableCell();
   tc2.Text="名称";
   
   TableCell tc3=new TableCell();
   tc3.Text="大小";
   
   TableRow tr1=new TableRow();
   tr1.Cells.Add(tc1);
   tr1.Cells.Add(tc2);
   tr1.Cells.Add(tc3);

   Table1.Rows.Add(tr1);

   string[] files=Directory.GetFiles(Server.MapPath("")+@"\image\Computer");
   foreach(string file in files)
   {
    System.Web.UI.WebControls.Image img=new System.Web.UI.WebControls.Image();
    img.ImageUrl=file;

    TableCell tcImage=new TableCell();
    tcImage.Controls.Add(img);

    FileInfo f=new FileInfo(file);

    TableCell tcName=new TableCell();
    tcName.Text=f.Name;

    TableCell tcLength=new TableCell();
    tcLength.Text=f.Length.ToString();

    TableRow trImage=new TableRow();
    trImage.Cells.Add(tcImage);
    trImage.Cells.Add(tcName);
    trImage.Cells.Add(tcLength);

    Table1.Rows.Add(trImage);
   }
   Table1.BorderStyle=BorderStyle.Inset;
   Table1.BorderWidth=Unit.Pixel(1);
  }
字符串转化。
人民币currency:ToString("c")
十进制decimalist:ToString("d")
指数exponent:ToString("e")
浮点float:ToString("f") ToString("f1")
常规general:ToString("g")
数字numeric:ToString("n")
百分比percentage:ToString("p")
十六进制hex:ToString("x")

 


  private void Button1_Click(object sender, System.EventArgs e)
  {
   SqlConnection cn=new  SqlConnection();
   String str;
   SqlCommand cmd;
   SqlDataReader dr;//只进、只读、逐行访问、独占连接,类似于ADO中的Recordset
  
   cn.ConnectionString="server=.;database=pubs;uid=sa;pwd=";
   str="select * from employee where minit='B'";
   cmd=new SqlCommand(str,cn);
   cn.Open();
   dr=cmd.ExecuteReader(CommandBehavior.CloseConnection);//在执行该命令时,如果关闭关联的 DataReader 对象,则关联的 Connection 对象也将关闭。

   if(!dr.HasRows)
    return;

   DataTable dt=new DataTable("employee");//定义数据表dt
   DataRow dw;//定义数据行dw   
   for(int i=0;i<dr.FieldCount;i++)//循环每一列
   {
    dt.Columns.Add(new DataColumn(dr.GetName(i)));//获取每一列的名称
   }
   while (dr.Read()) //向前逐行读取数据
   {
    dw=dt.NewRow();//在数据表中定义新行
    for(int i=0;i<dr.FieldCount;i++)//循环每一列
    {
     dw[i]=dr.GetValue(i);//设置行的每一列的值
     dw[i]=dr[i];//设置行的每一列的值
    }
    dt.Rows.Add(dw);//将数据行添加到数据表中
   }
   DataGrid1.DataSource=dt;   
   DataGrid1.DataBind(); 

   //---------------------------------只进----------------------------------------------
   DataGrid2.DataSource=dr;   
   DataGrid2.DataBind(); 
   
   dr.Close();//当正在使用 SqlDataReader 时,关联的 SqlConnection 在忙于服务 SqlDataReader,而且除了关闭以外不能对 SqlConnection 执行其他任何操作。除非调用 SqlDataReader 的 Close 方法,否则会一直处于此状态。
   // cn.Close();

   string str2="select * from employee where minit='F'";
   SqlCommand cmd2=new SqlCommand(str2,cn);
   cn.Open();
   SqlDataReader dr2;
   using(dr2=cmd2.ExecuteReader(CommandBehavior.CloseConnection))//using 语句定义一个范围,在此范围的末尾将处理对象。
   {
    DataGrid3.DataSource=dr2;
    DataGrid3.DataBind();
   }
   //   DataGrid4.DataSource=dr2;
   //   DataGrid4.DataBind();


   string str3="select * from employee where minit='M'";
   SqlCommand cmd3=new SqlCommand(str3,cn);
   cn.Open();
   using(SqlDataReader dr3=cmd3.ExecuteReader())//using 语句定义一个范围,在此范围的末尾将处理对象。
   {
    DataGrid4.DataSource=dr3;
    DataGrid4.DataBind();
   }
  }

  private void Button2_Click(object sender, System.EventArgs e)
  {
   SqlConnection cn=new SqlConnection("server=.;database=northwind;uid=sa;pwd=;");
   SqlCommand cmd = new SqlCommand("SELECT CategoryID, CategoryName FROM Categories order by CategoryID;" +
    "SELECT EmployeeID, LastName FROM Employees order by EmployeeID", cn);
   cn.Open();

   SqlDataReader myReader = cmd.ExecuteReader();
   //   SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.SingleResult);
   //   SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.SingleRow);

   Label1.Text="";
   do
   {
    Label1.Text+="<b>"+myReader.GetName(0)+"----"+ myReader.GetName(1)+"<br></b>";

   while (myReader.Read())
    Label1.Text+=myReader.GetInt32(0)+"----"+ myReader.GetString(1)+"<br>";

   } while (myReader.NextResult());

   myReader.Close();
   cn.Close();
  }

  private void Button3_Click(object sender, System.EventArgs e)
  {
   SqlConnection cn=new SqlConnection("server=.;database=northwind;uid=sa;pwd=;");

   SqlCommand cmd = new SqlCommand("SELECT * FROM Categories order by CategoryID",cn);

   cn.Open();

   SqlDataReader myReader = cmd.ExecuteReader();

   DataTable schemaTable = myReader.GetSchemaTable();

   Label1.Text="";

   foreach (DataRow myRow in schemaTable.Rows)
   {
    Label1.Text+="<br>";
    foreach (DataColumn myCol in schemaTable.Columns)
     Label1.Text+=myCol.ColumnName + " = " + myRow[myCol]+"<br>";
   }

   myReader.Close();

   cn.Close();
  }
 }

 private void Button3_Click(object sender, System.EventArgs e)
  {
   SqlConnection cn=new SqlConnection("server=.;database=pubs;uid=sa;pwd=");   
   SqlCommand cmd=new SqlCommand("select * from titles where title=@title",cn);
   cmd.Parameters.Add("@title",TextBox1.Text);
   cn.Open();
   SqlDataReader dr=cmd.ExecuteReader();
   DataGrid1.DataSource=dr;
   DataGrid1.DataBind();
   dr.Close();
   cn.Close();
  }

  private void Button4_Click(object sender, System.EventArgs e)
  {
   SqlConnection cn=new SqlConnection("server=.;database=pubs;uid=sa;pwd=");   
   SqlCommand cmd=new SqlCommand("select * from titles where title like @title",cn);
   cmd.Parameters.Add("@title","%"+TextBox1.Text+"%");
   cn.Open();
   SqlDataReader dr=cmd.ExecuteReader();
   DataGrid1.DataSource=dr;
   DataGrid1.DataBind();
   dr.Close();
   cn.Close();
  }


  private void Button1_Click(object sender, System.EventArgs e)
  {
   
   SqlCommand cmd=new SqlCommand();
   cmd.CommandText="usp_titles";        
   cmd.CommandType=CommandType.StoredProcedure;
   
   //自行设定参数
   SqlParameter pa;
   
   //存储过程的第一个参数是输出值
   pa=cmd.Parameters.Add("@return",SqlDbType.Int);
   pa.Direction=ParameterDirection.ReturnValue;

   //存储过程的输入参数(名称必须和存储过程中的参数名称相同)
   pa=cmd.Parameters.Add("@type",SqlDbType.VarChar);
   pa.Direction=ParameterDirection.Input;
            pa.Value=this.TextBox1.Text;

   //存储过程的最后一个参数是输出值
   pa=cmd.Parameters.Add("@count",SqlDbType.Int);
   pa.Direction=ParameterDirection.Output;

   //建立与数据库的连接
   SqlConnection cn=new SqlConnection("server=.;database=pubs;uid=sa;pwd=;");
   cn.Open();
   cmd.Connection=cn;

   //将数据读取到数据对象中
   SqlDataReader dr =cmd.ExecuteReader();
   this.DataGrid1.DataSource=dr;
   this.DataGrid1.DataBind();
   
   Response.Write(cmd.Parameters[0]+":"+cmd.Parameters[0].Value +"<br>");
   dr.Close();//必须关闭SqlDataReader对象后才能读取输出参数以及返回值
   cn.Close();
   Response.Write(cmd.Parameters[1]+":"+cmd.Parameters[1].Value + "<br>");
   Response.Write(cmd.Parameters[2]+":"+cmd.Parameters[2].Value + "<br>");
   
  }

  private void Button2_Click(object sender, System.EventArgs e)
  {
   SqlConnection sqlCon = new SqlConnection("server=.;database=pubs;uid=sa;pwd=;");

   SqlCommand cmd = new SqlCommand("usp_titles",sqlCon);
   cmd.CommandType = CommandType.StoredProcedure;

   //从数据库获取参数
   //从 SqlCommand 指定的存储过程中检索参数信息,并填充指定的 SqlCommand 对象的 Parameters 集。
   sqlCon.Open();
   SqlCommandBuilder.DeriveParameters(cmd);

   //给各个参数赋值
   cmd.Parameters[0].Direction = ParameterDirection.ReturnValue;
   cmd.Parameters[1].Value = this.TextBox1.Text;
   cmd.Parameters[2].Direction = ParameterDirection.Output;

   SqlDataReader sqlDr =cmd.ExecuteReader();
   this.DataGrid1.DataSource=sqlDr;
   this.DataGrid1.DataBind();
   sqlDr.Close();
   sqlCon.Close();   

   Response.Write(cmd.Parameters[0]+":"+cmd.Parameters[0].Value +"<br>");
   Response.Write(cmd.Parameters[1]+":"+cmd.Parameters[1].Value + "<br>");
   Response.Write(cmd.Parameters[2]+":"+cmd.Parameters[2].Value + "<br>");

   
  }


  private void Button1_Click(object sender, System.EventArgs e)
  {
   SqlConnection cn=new  SqlConnection();
   SqlCommand cmd=new SqlCommand();
   SqlDataAdapter da;
   DataSet ds=new DataSet();
   
   cn.ConnectionString="Data Source=.;Initial Catalog=pubs;User ID=sa;password=";   
   cmd.Connection=cn;
   da=new SqlDataAdapter(cmd);
   
   cmd.CommandText="select au_id,au_fname,au_lname from Authors";
   da.Fill(ds,"Authors");

   cmd.CommandText="select au_id,title_id from TitleAuthor";
   da.Fill(ds,"TitleAuthor");

   cmd.CommandText="select title_id,title from Titles";
   da.Fill(ds,"Titles");

   DataRelation Titles_TitleAuthors=new DataRelation("",ds.Tables["Titles"].Columns["title_id"],ds.Tables["TitleAuthor"].Columns["title_id"]);
   ds.Relations.Add(Titles_TitleAuthors);
   DataRelation Authors_TitleAuthors=new DataRelation("",ds.Tables["Authors"].Columns["au_id"],ds.Tables["TitleAuthor"].Columns["au_id"]);
   ds.Relations.Add(Authors_TitleAuthors);

   lblList.Text="每位作者及其写的书"+"<br>";
   foreach(DataRow rowAuthor in ds.Tables["Authors"].Rows)
   {
    lblList.Text +="<br>" + rowAuthor["au_fname"]+" " + rowAuthor["au_lname"] + "<br>";
    foreach(DataRow rowTitleAuthors in rowAuthor.GetChildRows(Authors_TitleAuthors))
    {
     foreach(DataRow rowTitle in rowTitleAuthors.GetParentRows(Titles_TitleAuthors))
     {
      lblList.Text +=rowTitle["Title"] + "<br><b>";
     }

    }
   } 
  }

  private void Button2_Click(object sender, System.EventArgs e)
  {
   SqlConnection cn=new  SqlConnection();
   SqlCommand cmd=new SqlCommand();
   SqlDataAdapter da;
   DataSet ds=new DataSet();
   
   cn.ConnectionString="Data Source=.;Initial Catalog=northwind;User ID=sa;password=";   
   cmd.Connection=cn;
   da=new SqlDataAdapter(cmd);
   
   cmd.CommandText="select customerid,contactname from customers";
   da.Fill(ds,"customers");

   cmd.CommandText="select customerid,orderdate from orders";
   da.Fill(ds,"orders");

   DataRelation drC_O=new DataRelation("c_o",ds.Tables["customers"].Columns["customerid"],ds.Tables["orders"].Columns["customerid"]);
   ds.Relations.Add(drC_O);
   
   lblList.Text="每位顾客及其订货日期"+"<br>";
   foreach(DataRow drC in ds.Tables["customers"].Rows)
   {
    lblList.Text += drC["contactname"] + "<br>";
    foreach(DataRow drO in drC.GetChildRows(drC_O))
    {
     lblList.Text +=drO["orderdate"] + "<br>";
    }
   }

  }

  private void Button3_Click(object sender, System.EventArgs e)
  {
   //   SqlConnection cn=new SqlConnection("server=.;database=northwind;uid=sa;pwd=");   
   //   SqlCommand cmd=new SqlCommand();
   //   cmd.Connection=cn;
   //   SqlDataAdapter da=new SqlDataAdapter(cmd);
   //   DataSet ds=new  DataSet();
   //
   //   cmd.CommandText="select Customerid,contactname from customers";
   //   da.Fill(ds,"customers");
   //   cmd.CommandText="select customerid,orderdate from orders";
   //   da.Fill(ds,"orders");
   //
   //   DataRelation dr=new DataRelation("c_o",ds.Tables["customers"].Columns["customerid"],ds.Tables["orders"].Columns["customerid"]);
   //   ds.Relations.Add(dr);
   //
   //   for(int i=0;i<ds.Tables["customers"].Rows.Count;i++)
   //   {
   //    DataRow dw=ds.Tables["customers"].Rows[i];
   //    TreeNode tr=new TreeNode();
   //    tr.Text=dw["contactname"].ToString();
   //    TreeView1.Nodes.Add(tr);
   //    DataRow[] dwa=dw.GetChildRows(dr);
   //    for(int j=0;j<dwa.Length;j++)
   //    {
   //     TreeNode tr2=new TreeNode ();
   //     tr2.Text=dwa[j]["orderdate"].ToString();
   //     TreeView1.Nodes[i].Nodes.Add(tr2);
   //    }
   //
   //   }
  }
 }

 

 

 

 

 

 private void btnOk_Click(object sender, System.EventArgs e)
  {
   
//   string url="ChampionVoteResult.aspx";
//   string para1="?name="+Server.UrlEncode(tb1.Text);
//   string para2="&phone="+Server.UrlEncode(tb2.Text);
//   HyperLink1.NavigateUrl=url+para1+para2;
//   Response.Redirect(url+para1+para2);
//   Response.Cookies["user"]["name"]=tb1.Text;
//   Response.Cookies["user"]["phone"]=tb2.Text;
//   Response.Cookies["user"].Expires=DateTime.Now.AddHours(1);
//   Response.Cookies["name"].Value=tb1.Text;
//   Response.Cookies["name"].Expires=DateTime.Now.AddDays(1);
//   Response.Cookies["phone"].Value=tb2.Text;
//   Response.Cookies["phone"].Expires=DateTime.Now.AddDays(1);
   Server.Transfer("ChampionVoteResult.aspx");
  }

 

//  private void btnAbandon_Click(object sender, System.EventArgs e)
//  {
//   Session.Abandon();
//  }
//
//  private void btnVar_Click(object sender, System.EventArgs e)
//  {
//   Session["Name"]=txtVar.Text;
//   Session.Timeout=int.Parse(txtTime.Text);
//  }
//
//  private void btnShow_Click(object sender, System.EventArgs e)
//  {
//   name.Text=(string)Session["Name"];
//   time.Text=Session.Timeout.ToString();
//  }
 }
}
ViewState是ASP.NET中用来保存WEB控件回传时状态值一种机制。在WEB窗体(FORM)的设置为runat="server",这个窗体(FORM)会被附加一个隐藏的属性_VIEWSTATE。_VIEWSTATE中存放了所有控件在ViewState中的状态值。

 

ViewState是类Control中的一个域,其他所有控件通过继承Control来获得了ViewState功能。它的类型是system.Web.UI.StateBag,一个名称/值的对象集合。

当请求某个页面时,ASP.NET把所有控件的状态序列化成一个字符串,然后做为窗体的隐藏属性送到客户端。当客户端把页面回传时,ASP.NET分析回传的窗体属性,并赋给控件对应的值。当然这些全部是由ASP.NET负责的,对用户来说是透明的。

 

使用ViewState的条件
如果要使用 ViewState,则在 ASPX 页面中必须有一个服务器端窗体标记 (<form runat=server>)。窗体字段是必需的,这样包含 ViewState 信息的隐藏字段才能回传给服务器。而且,该窗体还必须是服务器端的窗体,这样在服务器上执行该页面时,ASP.NET 页面框架才能添加隐藏的字段。
Page 的 EnableViewState 属性值为 true。
控件的 EnableViewState 属性值为 true。

页面本身将 20 字节左右的信息保存在 ViewState 中,用于在回传时将 PostBack 数据和 ViewState 值分发给正确的控件。因此,即使该页面或应用程序禁用了 ViewState,仍可以在 ViewState 中看到少量的剩余字节。

设置ViewState

ViewState可以在控件,页,程序,全局配置中设置。缺省情况下 EnableViewState 为 true 。如果要禁止所有页面 ViewState 功能,可以在程序配置中把 EnableViewState 设为 false 。


在控件中:

<asp:DataGridEnableViewState="false"%>

DataGrid1.EnableViewState= false;
在页中:

<%@ PageEnableViewState="false" %>

Page.EnableViewState= false;
在程序中:

在web.config中加入

<pages enableViewState="false" />
在全局配置:

在machine.config中修改

<pages enableViewState="false" />

EnableViewState优先级别:
全局配置 < 程序 < 页< 控件

注意:下列服务器控件不能禁止ViewState

Textbox
Checkbox
Checkbox List
RadioButtonList
上面控件的状态通过IPostBackEventHandler 和 IPostBackDataHandler接口处理,而不是ViewState的机制,所以EnableViewState没有效果。

ViewState对象

在页面回传间通信,ASP中一般利用窗体的属性和 session 来存放数据,在 ASP.NET 中也可以使用 ViewState 对象来做同样的处理。


 

在ViewState存放数据:

ViewState[key]= value;

ViewState.Add(key,value);
取出数据:

TempStr =ViewState[key];
key不存在时返回空。

不能通过ViewState对象来访问控件的值。

动态建立控件的ViewState:

当需要动态地建立一个服务器控件,如下建立了一个 RadioButton 控件并加入到窗体控件集合中:

RadioButton rb = new RadioButton();
Page.Controls[1].Controls.Add(pc);
上面的代码增加一个控件到控件集合末,同样也可以插入到已有控件中的任何位置。

RadioButton rb = new RadioButton();
Page.Controls[1].Controls.AddAt(1,pc);

通常,这些动态生成的控件的状态也需要生成到 ViewState 中去,但这个功能并没有完全实现,特别是生成的控件插入到已有的控件中时。


当动态生成控件和已有控件并存时 ViewState 的结果是不可预料的。在页面回传时,首先非动态生成的控件在ASPX页中被生成,并在 Page_Init 和 Page_Load 事件中读取 ViewState。当页面的控件读取 ViewState 的值时,那些动态生成的控件却还没有被生成,所以当动态生成的控件被
生成时,页面就会省略掉ViewState或者以剩下或许错误的 ViewState 来填充控件。

所以,当需要插一个动态生成的控件到已有控件中去时,最好把这个控件的 ViewState 通过EnableViewState禁止掉。

提醒:
1. 当存在页面回传时,不需要维持控件的值就要把 ViewState 禁止。
2. ViewState的索引是大小写敏感的。
3. ViewState不是跨页面的。
4. 为了能包存在 ViewState 中,对象必须是可流化或者定义了 TypeConverter。
5. 控件 TextBox 的 TextMode 属性设置为 Password时,它的状态将不会被保存在 ViewState 中,这应该是出于安全性的考虑。
6. 在页面没有回传 或 重定向 或 在回传中转到(transfer)其他页面时不要使用 ViewState。
7. 在动态建立控件时要小心它的 ViewState。
8. 当禁止一个程序的 ViewState 时,这个程序的所有页面的 ViewState 也被禁止了。
9. 只有当页面回传自身时ViewState 才是持续的。

最后略提一句在Stryon(http://www.stryon.com.cn)公司的产品iNET(转换.NET APP成Java代码,http://208.49.57.227:8080/downloads/Default.aspx )中用Java 实现ViewState ,使用上没什么区别。

using System;
using System.Security.Cryptography;
using System.Text.RegularExpressions;
using System.Web;
using System.Collections;

namespace CookieLogin
{
 /// <summary>
 /// Users 的摘要说明。
 /// </summary>
 public class Users
 {
  public const string CK_UserCookie="UserCookie";
  public const string CK_UserName="UserName";
  public const string CK_UserPassword="UserPassword";
  
  /// <summary>
  /// 用户登录,将用户名保存到用户的 Cookie 中
  /// </summary>
  /// <param name="userName">用户名称</param>
  /// <param name="userPwd">用户密码</param>
  /// <param name="saveCookie">是否记住用户名称</param>
  /// <returns>如果用户登陆成功则返回真值</returns>
  public static bool UserLogin(string userName, string userPwd, bool saveCookie)
  {
   // 将用户的密码以MD5算法加密
   string userMd5Pwd=GetMd5Password(userPwd);
   if(JudgeUser(userName, userMd5Pwd))
   {
    if(saveCookie)
    {
     // 设置 COOKIE 信息
     HttpCookie cookie=new HttpCookie(Users.CK_UserCookie);
     cookie.Values.Add(Users.CK_UserName, userName);
     cookie.Values.Add(Users.CK_UserPassword, userMd5Pwd);
     // COOKIE 永不过期
     cookie.Expires=new DateTime(9999, 12, 31);
     // 保存用户的 COOKIE
     HttpContext.Current.Response.Cookies.Add(cookie);
    }
    return true;
   }
   else
   {
    return false;
   }
  }

  /// <summary>
  /// 判断用户名称与密码是否匹配
  /// </summary>
  /// <param name="userName">用户名称</param>
  /// <param name="userMd5Pwd">加密后密码</param>
  /// <returns>如果用户名称与密码匹配则返回真值</returns>
  public static bool JudgeUser(string userName, string userMd5Pwd)
  {
   Hashtable UserList=new Hashtable();
   UserList.Add("admin",GetMd5Password("999"));
   UserList.Add("guest",GetMd5Password("111"));
   if(!UserList.ContainsKey(userName))
    return false;
   if(UserList[userName].ToString()!=userMd5Pwd)
    return false;
   return true;
  }

  /// <summary>
  /// 注销用户登录,清除用户 Cookie
  /// </summary>
  public static void Logout()
  {
   //从相应Response中得到Cookies
   HttpCookie cookie=HttpContext.Current.Response.Cookies[Users.CK_UserCookie];
   if( cookie!=null)
    cookie.Expires=DateTime.Now;
  }

  /// <summary>
  /// 用户是否设置为自动登录
  /// </summary>
  /// <returns>如果用户Cookies信息正确则返回真值</returns>
  public static bool AutoLogin()
  {
   //从请求Request中得到Cookies
   HttpCookie cookie=HttpContext.Current.Request.Cookies[Users.CK_UserCookie];
   if(cookie!=null)
   {
    string userName=cookie.Values[Users.CK_UserName];
    string userMd5Pwd=cookie.Values[Users.CK_UserPassword];

    if(userName!=null && userMd5Pwd!=null)
     return JudgeUser(userName, userMd5Pwd);
    else
     return false;
   }
   else
   {
    return false;
   }
  }

  /// <summary>
  /// 将用户密码以 Md5 加密算法加密
  /// </summary>
  /// <param name="userPwd">获取加密后的密码字符串</param>
  /// <returns>加密前的密码字符串</returns>
  public static string GetMd5Password(string userPwd)
  {
   // 将密码字符串转化成字节数组
   byte[] byteArray=GetByteArray(userPwd);
   // 计算Md5密码
   byteArray=(new MD5CryptoServiceProvider()).ComputeHash(byteArray);
   // 将字节码转化成字符串并返回
   return BitConverter.ToString(byteArray);
  }

  /// <summary>
  /// 将字符串翻译成字节数组
  /// </summary>
  /// <param name="src">字符串</param>
  /// <returns>字节数组</returns>
  private static byte[] GetByteArray(string src)
  {
   byte[] byteArray=new byte[src.Length];
   for(int i=0; i<src.Length; i++)
    byteArray[i]=Convert.ToByte(src[i]);
   return byteArray;
  }
 }
}

posted on 2008-05-30 14:46  hekeneng  阅读(1768)  评论(0编辑  收藏  举报

导航