日期:2014-05-17  浏览次数:20459 次

会asp刚学.NET问题之提交数据

用户在表单里输入完信息后 点击提交到后台数据库

ASP提交数据给后台获取的方法很简单直接request就可以获得了

.NET怎么获得的?看了个视频是 在 GridView 中列出来的内容修改起来真复杂,只是获取个表单参数就一大串,请问有哪些方法获取啊

------解决方案--------------------
都是表单提交,有什么区别么?

Request.Params["控件name"]
------解决方案--------------------
获取url后面的参数值:Request.QueryString["参数名"]

获取表单元素的值:Request.Form["表单元素的name属性值"]
------解决方案--------------------
用服务器控件
然后后台用 服务器控件ID.Text或Value获取
------解决方案--------------------
探讨
获取url后面的参数值:Request.QueryString["参数名"]

获取表单元素的值:Request.Form["表单元素的name属性值"]

------解决方案--------------------

------解决方案--------------------
ASP.NET是一种高级脚本语言,在这种语言里,ASP里的HMTL元素被称做控件对象,也就是常说的class(类)

//就好比GridView控件,它本身就是一个类,你页面上拖放一个,页面生成器就会实例化一个此类的对象

string CompanyName=this.GridView1.DataKyes[e.RowIndex][1].ToString();
//这里this对象,是当前页面Page类对象的引用,而GridView1则是页面里的GridView实例化对象的引用
//DataKyes是GridView实例化对象的一个属性集合(官方说是主键集合),该属性集合由玩家自定义指定
//比如<asp:GridView ID="GridView1" runat="server" DataKeyNames="HotJobID,HotJobTitle"
//这里我给该主键集合指定了两个数据源字段 HotJobID和HotJobTitle

//e是producted void GridView1_RowUpdating(object sender,GridViewUpdateEventArgs e)
//事件中的参数,它也是一个类对象,如果把GridView生成的HTML想象为行与列组成的表格的话,那么e就相当于一行对象,可能我说成<tr></tr>你更容易理解
//e.RowIndex中的RowIndex则是e对象的一个属性,通过它我们可以提取e对象的当前行记录索引(e对象你可以假设为鼠标点击触发GridView1_RowUpdating事件的那一行记录对象<tr></tr>)
//DataKyes[e.RowIndex][1] 微软的约定,数组以0行0列为开头,所以,这个值就是:第e.RowIndex+1行,第2列的值,假如之前我设置了DataKeyNames="HotJobID,HotJobTitle",设置了两个字段,则就是当前行记录的HotJobTitle字段值,如果你想取得HotJobID字段,改为DataKyes[e.RowIndex][0]

string CompanyName=this.GridView1.DataKyes[e.RowIndex][1].ToString();
//这时候你再看这语句,应该了解它取得的是什么值了吧
------解决方案--------------------
探讨

ASP.NET是一种高级脚本语言,在这种语言里,ASP里的HMTL元素被称做控件对象,也就是常说的class(类)

//就好比GridView控件,它本身就是一个类,你页面上拖放一个,页面生成器就会实例化一个此类的对象

string CompanyName=this.GridView1.DataKyes[e.RowIndex][1].ToString();
//这里this对象,是……

------解决方案--------------------
string CompanyName=(TextBox)this.GridView1.Rows[e.RowIndex].Cells[0].Controls[0].Text.ToString();
//如果你理解了我楼上所说的原理,相信这个你不难理解
//Rows是GridView1的行对象集合
//Rows[e.RowIndex]代表当前行对象,你可以理解为<tr></tr>
//而Cells又是Row对象的单元集合,Cells[0]代表当前行对象的第一个单元对象,你可以把Cell对象理解为<td></td>
//Cells[0].Controls[0] 单元格对象里的Controls控件属性集合,比如你一个<td></td>里包含有多个TextBox控件时,Controls[0]就是第一个控件,Controls[2]就是该单元格里的第二个控件
//然后强制转换后取相应的值

//其实使用string CompanyName=(TextBox)this.GridView1.Rows[e.RowIndex].Cells[0].Controls[0].Text.ToString();
方式的,一般是直接使用官方封装好的<asp:BoundField DataField="CompanyName" HeaderText="公司名称" />模板

//如果使用官方的另一种模板:
<asp:TemplateField HeaderText="选择">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
//像这样的模板,则在获取里面控件引用时,使用的是另一种方式:
bool hasCheck=((CheckBox)this.GridView1.Rows[e.RowIndex].FindControl("CheckBox1")).Checked
//这里我不解释了,希望楼主能看得懂,说得通俗一点就是在当前行对象中查找指定ID的控件