private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!this.Page.IsPostBack)
{
buss.buss buss = new web_bootnr.buss.buss();
ds = new DataSet();
ds = buss.Info(Convert.ToInt32(Request["index"]));
DataGrid1.DataSource =ds.Tables[0];
DataGrid1.DataKeyField = "id";
DataGrid1.DataBind();
}
}绑定代码
private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName=="Add")
{
TextBox tb = new TextBox();
tb = (TextBox)DataGrid1.Items[e.Item.ItemIndex].Cells[5].FindControl("TextBox1");
Response.Redirect("ship-bag.aspx?num="+((TextBox)(e.Item.FindControl("TextBox1"))).Text+"&val="+tb.Text);
}
}
为什么ItemCommand取不到TextBox的值,请高手们看看!谢谢
{
// 在此处放置用户代码以初始化页面
if(!this.Page.IsPostBack)
{
buss.buss buss = new web_bootnr.buss.buss();
ds = new DataSet();
ds = buss.Info(Convert.ToInt32(Request["index"]));
DataGrid1.DataSource =ds.Tables[0];
DataGrid1.DataKeyField = "id";
DataGrid1.DataBind();
}
}绑定代码
private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName=="Add")
{
TextBox tb = new TextBox();
tb = (TextBox)DataGrid1.Items[e.Item.ItemIndex].Cells[5].FindControl("TextBox1");
Response.Redirect("ship-bag.aspx?num="+((TextBox)(e.Item.FindControl("TextBox1"))).Text+"&val="+tb.Text);
}
}
为什么ItemCommand取不到TextBox的值,请高手们看看!谢谢
Response.Redirect("ship-bag.aspx?num="+tb.text+"&val="+tb.Text);
{
TextBox tb = new TextBox();
tb = (TextBox)DataGrid1.Items[e.Item.ItemIndex].Cells[5].FindControl("TextBox1");
Response.Redirect("ship-bag.aspx?num="+((TextBox)(e.Item.FindControl("TextBox1"))).Text+"&val="+tb.Text);
}
---------------
你只是想把textbox1.text的值通过num传出去,是吗?
如果是,那么你new 一个tb出来有什么用呢?直接:
Response.Redirect("ship-bag.aspx?num="+((TextBox)(e.Item.FindControl("TextBox1"))).text+"");
{
TextBox tb = (TextBox)e.Item.Cells[5].FindControl("TextBox1");
Response.Redirect(...);
}
{
TextBox tb = new TextBox();
tb = (TextBox)DataGrid1.Items[e.Item.ItemIndex].Cells[5].FindControl("TextBox1");
Response.Redirect("ship-bag.aspx?num="+((TextBox)(e.Item.FindControl("TextBox1"))).Text+"&val="+tb.Text);
}
--------------------是不是你的这句:DataGrid1.Items[e.Item.ItemIndex].Cells[5].FindControl("TextBox1");
我觉得应该写成:tb = (TextBox)e.Item.FindControl("TextBox1");
CssClass="title1" AutoGenerateColumns="False" Width="846px">
<HeaderStyle Font-Bold="True" HorizontalAlign="Center" BackColor="LightGray"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="Image merchandise">
<ItemTemplate>
<P align="center">
<asp:Image id="Image1" runat="server" Width="100px" Height="80px" ImageUrl='<%#DataBinder.Eval(Container.DataItem,"img1")%>'>
</asp:Image>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Product Name">
<ItemTemplate>
<P align="center">
<asp:Label id="id" runat="server" Visible="False">
<%# DataBinder.Eval(Container.DataItem,"id") %>
</asp:Label><A href='introduce.aspx?product=<%#DataBinder.Eval(Container.DataItem,"Trade_Name")%>'><%#DataBinder.Eval(Container.DataItem,"Trade_Name")%></A></P>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Size ">
<ItemTemplate>
<P align="center">
<asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList></P>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Selling price">
<ItemTemplate>
<P align="center">
<asp:Label id="Label2" runat="server">
Market Prices:<%#DataBinder.Eval(Container.DataItem,"price")%>
</asp:Label><BR>
<asp:Label id="Label3" runat="server" ForeColor="#FF8000">
Our Prices:<%# DataBinder.Eval(Container.DataItem,"ourprice") %></asp:Label></P>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Stock ">
<ItemTemplate>
<P align="center">
<asp:Label id="Label4" runat="server">
<%#DataBinder.Eval(Container.DataItem,"count")%>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Order quantity">
<ItemTemplate>
<P align="center">
<asp:TextBox id="TextBox1" runat="server" Text="1"></asp:TextBox></P>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Add Bag">
<ItemTemplate>
<asp:Button id="Button1" Runat="server" CommandName="Add" Text="Button"></asp:Button>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
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;
using web_bootnr.buss;namespace web_bootnr
{
/// <summary>
/// BNR_Storev21 的摘要说明。
/// </summary>
public class BNR_Storev21 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.HyperLink HyperLink2;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.HyperLink HyperLink1;
protected System.Web.UI.WebControls.HyperLink HyperLink3;
protected System.Web.UI.WebControls.HyperLink HyperLink4;
protected System.Web.UI.WebControls.HyperLink HyperLink5;
protected System.Web.UI.WebControls.HyperLink HyperLink6;
protected System.Web.UI.WebControls.HyperLink HyperLink7;
protected System.Web.UI.WebControls.HyperLink HyperLink8;
protected System.Web.UI.WebControls.HyperLink HyperLink9;
protected DataSet ds;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
buss.buss buss = new web_bootnr.buss.buss();
ds = new DataSet();
ds = buss.Info(Convert.ToInt32(Request["index"]));
DataGrid1.DataSource =ds.Tables[0];
DataGrid1.DataKeyField = "id";
DataGrid1.DataBind();
}
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);
this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound_1);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void DataGrid1_ItemDataBound_1(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType!=ListItemType.Header)
{
e.Item.Attributes.Add( "onmouseout","this.style.backgroundColor=\""+e.Item.Style["BACKGROUND-COLOR"]+"\"");
e.Item.Attributes.Add( "onmouseover","this.style.backgroundColor=\""+ "#EFF3F7"+"\"");
}
} private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName=="Add")
{
TextBox lt = (TextBox)DataGrid1.Items[e.Item.ItemIndex].FindControl("TextBox1");
Response.Write(lt.Text);
}
}
}
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
int i, j;
DataGridItem item;
string[] delItem = new string[5];
j = 0;
for (i = 0; i <= dgCart.Items.Count - 1; i++)
{
item = dgCart.Items[i];
TextBox CountText = (TextBox)item.FindControl("txtCount");
CheckBox chkDel = (CheckBox)item.FindControl("chkProductID");
if (chkDel.Checked)
{
delItem[j] = i.ToString();
j = j + 1;
}
Cart.Rows[i][3] = CountText.Text;
Cart.Rows[i][4] = Convert.ToDouble(Cart.Rows[i][2]) * Convert.ToDouble(Cart.Rows[i][3]);
Cart.Rows[i][8] = Convert.ToInt32(Cart.Rows[i][3]) * Convert.ToInt32(Cart.Rows[i][7]);
}
for (i = 0; i <= j - 1; i++)
{
int delI = Convert.ToInt32(delItem[i]);
Cart.Rows[delI].Delete();
}
CalculateTotal();
dgCart.DataSource = new DataView(Cart);
dgCart.DataBind();
}
if(e.CommandName=="Add")
{
TextBox tb = (TextBox)e.Item.Cells[5].FindControl("TextBox1");
Response.Redirect(...);
}
我也试过,这样是可以的,但是就是不知道是什么原因
HorizontalAlign="Center" BorderColor="DarkGray" BackColor="White">
<HeaderStyle Font-Bold="True" HorizontalAlign="Center" BackColor="LightGray"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="Image merchandise">
<ItemTemplate>
<P align="center">
<asp:Image id="Image1" runat="server" Width="100px" Height="80px" ImageUrl='<%#DataBinder.Eval(Container.DataItem,"au_id")%>'>
</asp:Image>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Product Name">
<ItemTemplate>
<P align="center">
<asp:Label id="id" runat="server" Visible="False">
<%# DataBinder.Eval(Container.DataItem,"au_id") %>
</asp:Label><A href='introduce.aspx?product=<%#DataBinder.Eval(Container.DataItem,"au_id")%>'><%#DataBinder.Eval(Container.DataItem,"au_id")%></A></P>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Size ">
<ItemTemplate>
<P align="center">
<asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList></P>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Selling price">
<ItemTemplate>
<P align="center">
<asp:Label id="Label2" runat="server">
Market Prices:<%#DataBinder.Eval(Container.DataItem,"state")%>
</asp:Label><BR>
<asp:Label id="Label3" runat="server" ForeColor="#FF8000">
Our Prices:<%# DataBinder.Eval(Container.DataItem,"state") %></asp:Label></P>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Stock ">
<ItemTemplate>
<P align="center">
<asp:Label id="Label4" runat="server">
<%#DataBinder.Eval(Container.DataItem,"state")%>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Order quantity">
<ItemTemplate>
<P align="center">
<asp:TextBox id="TextBox1" runat="server" Text="1"></asp:TextBox></P>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Add Bag">
<ItemTemplate>
<asp:Button id="Button1" Runat="server" CommandName="Add" Text="Button"></asp:Button>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
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;
using System.Data.SqlClient;
namespace WebDemo
{
/// <summary>
/// WebForm2 的摘要说明。
/// </summary>
public class WebForm2 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1; private void BindGrid()
{
SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
SqlDataAdapter da = new SqlDataAdapter("select au_id, state, contract from authors", cn);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
cn.Close();
DataGrid1.DataSource = ds;
DataGrid1.DataKeyField = "au_id";
DataGrid1.DataBind();
} private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
BindGrid();
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);
this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType!=ListItemType.Header)
{
e.Item.Attributes.Add( "onmouseout","this.style.backgroundColor=\""+e.Item.Style["BACKGROUND-COLOR"]+"\"");
e.Item.Attributes.Add( "onmouseover","this.style.backgroundColor=\""+ "#EFF3F7"+"\"");
}
} private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName=="Add")
{
TextBox lt = (TextBox)DataGrid1.Items[e.Item.ItemIndex].FindControl("TextBox1");
Response.Write(lt.Text);
}
}
}
}