无法从datalist选择中动态地将值传递到gridview中的文本框 [英] Unable to pass values to textbox in gridview dynamically from datalist selection

查看:48
本文介绍了无法从datalist选择中动态地将值传递到gridview中的文本框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的购物车项目中,我有一个datalist和gridview。我在数据库中有2个产品,并通过pageloadist在pageload上显示。我想使用添加到购物车按钮在

选择中逐个添加这些产品。我可以在gridview中添加空白行,点击添加到购物车按钮,但无法为各个文本框分配值。任何人都可以帮我吗?

以下是我的代码:



In my shopping cart project I have a datalist and a gridview. I have 2 products in database and is displayed through datalist on pageload. I want to add these products in gridview one by one on
selection using 'add to cart' button. I am able to add blank rows in gridview on click of that 'add to cart' button but unable to assign values to respective textbox's. Can any one help me out?
Hereunder is my code:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="CartItems" runat="server" Text="CartItem"></asp:Label>
<table width="100%">
<asp:DataList ID="Datalist1" runat="server" DataKeyField="item_code"  RepeatDirection="Horizontal"

RepeatLayout="Table"  OnItemCommand="dl_item_command"  >
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
Item code:
<asp:Label Id="Itmcodelbl" runat="server" Text='<%#Eval("item_code") %>'>
</asp:Label>
<br />
Item Name:
<asp:Label Id="Itmnamelbl" runat="server" Text='<%#Eval("item_name") %>'>
</asp:Label>
<br />
Particulars:
<br />
<asp:TextBox Id="TB1" runat="server" Text='<%#Eval("item_desc") %>'

Height="94"   ReadOnly="true"  TextMode="MultiLine"  BorderStyle="None">
</asp:TextBox>
<br />
<asp:Image ID="imgEmp" runat="server" Width="100px" Height="120px" ImageUrl='<%# Bind("Photopath","~/photo/{0}") %>' style="padding-left:40px; border-color:Green; border-left-style:groove; border-width:thin"/><br />
Buy :
<asp:TextBox Id="TB2" runat="server" Text="" Width="24" OnTextChanged="TB2_TextChanged" MaxLength="6" AutoPostBack="true"

Height="12"     BorderStyle="Groove">
</asp:TextBox>
<asp:Button ID="Button18" runat="server" ForeColor="White"   commandname="myevent"

BackColor="Teal" Font-Size="small"

style="z-index: 1;font-family:Sans-Serif; height:22px;  font-weight:900; "

Text="Add to cart" />
 </ItemTemplate>
</asp:DataList>
</table>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Label id="Label4" runat="server"/>







protected void Page_Load(object sender,EventArgs e)

{

if( !IsPostBack)

{

v_rowindextag =;

rowIndex = 0;

SetInitialRow();

DataSet ds = new DataSet();

DataTable FromTable = new DataTable();

con.Open();

string cmdstr =从项目中选择*;

Sql命令cmd = new SqlCommand(cmdstr,con);

SqlDataAdapter adp = new SqlDataAdapter(cmd);

adp.Fill(ds);

Datalist1.DataSource = ds.Tables [0];

Datalist1.DataBind();

}



}

private void SetInitialRow()

{

DataTable dt = new DataTable();

DataRow dr = null;

dt.Columns.Add(new DataColumn(RowNumber,typeof(string)));

dt.Columns.Add(new DataColumn(Column1 ,typeof(string)));

dt.Columns.Add(new DataColumn(Column2,typeof(string)));

dt.Columns.Add (new DataColumn(Column3,typeof(string)));

dt.Columns.Add(new DataColumn(Column4,typeof(string)));

dr = dt.NewRow();

dr [RowNumber] = 1;

dr [Column1] = string.Empty;

D r [Column2] = string.Empty;

dr [Column3] = string.Empty;

dr [Column4] = string.Empty;

dt.Rows.Add(dr);

//将数据表存储在ViewState中

ViewState [CurrentTable] = dt;

GridView3.DataSource = dt;

GridView3.DataBind();

}



public void dl_item_command(Object sender,DataListCommandEventArgs e)

{

if(e.CommandName ==myevent)//在这里检查命令名

{

int index = e.Item.ItemIndex;

Label lbl =(Label)Datalist1.Items [index] .FindControl(Itmnamelbl);

Label4.Text = lbl.Text;

标签lbl1 =(标签)Datalist1.Items [index] .FindControl(Itmcodelbl);

int v_code = Convert.ToInt32(lbl1.Text);

AddNewRowToGrid();

}



}

private void AddNewRowToGrid()

{

rowIndex = 0;

if(ViewState [CurrentTable]!= null)

{

DataTable dtCurrentTable =(DataTable)ViewState [CurrentTable];

DataRow drCurrentRow = null;

if(dtCurrentTable.Rows.Count> 0)

{

for(int i = 1; i< = dtCurrentTable.Rows.Count; i ++)

{

//向网格添加新行

drCurrentRow = dtCurrentTable.NewRow();

drCurrentRow [RowNumber] = i + 1;

//提取TextBox值

TextBox box1 =(TextBox)GridView3.Rows [rowIndex] .Cells [1] .FindControl(TextBox1);

TextBox box2 =(TextBox)GridView3.Rows [rowIndex] .Cells [2] .FindControl(TextBox2);

TextBox box3 =(TextBox)GridView3.Rows [rowIndex] .Cells [ 3] .FindControl(TextBox3);

TextBox box4 =(TextBox)GridView3.Rows [rowIndex] .Cells [4] .FindControl(TextBox4);

//box1.Text = Label4.Text;

dtCurrentTable.Rows [i - 1] [Column1] = box1.Text;

dtCurrentTable.Rows [i - 1] [Column2] = box2.Text;

dtCurrentTable.Rows [i - 1] [Column3] = box3.Text;

dtCurrentTable.Rows [i - 1] [Column4] = box4.Text;

rowIndex ++;

v_rowindextag =*;

}



}

dtCurrentTable.Rows.Add(drCurrentRow);

ViewState [CurrentTable ] = dtCurrentTable;

GridView3.DataSource = dtCurrentTable;

GridView3.DataBind();

}

else

{

Response.Write(ViewState为null);

}

//设置以前的数据在回发上

SetPreviousData();

}



private void SetPreviousData()

{

rowIndex = 0;

if(ViewState [CurrentTable]!= null)

{

DataTable dt =(DataTable)ViewState [CurrentTable];

if(dt.Rows.Count> 0)

{

for(int i = v_int; i< dt.Rows.Count; i ++)

{

TextBox box1 =(TextBox)GridView3.Rows [rowIndex] .Cells [1] .FindControl(TextBox1);

TextBox box2 =(TextBox)GridView3.Rows [rowIndex]。 Cells [2] .FindControl(TextBox2);

TextBox box3 =(TextBox)GridView3.Rows [rowIndex] .Cells [3] .FindControl(TextBox3);

TextBox box4 =(TextBox)GridView3.Rows [rowIndex] .Cells [4] .FindControl(TextBox4);

box1.Text = dt.Rows [i] [Column1 ] .ToString();

box2.Text = dt.Rows [i] [Column2]。ToString();

box3.Text = dt.Rows [ i] [Column3]。ToString();

box4.Text = dt.Rows [i] [Column4]。ToString();

rowIndex ++;

}

}

}




protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
v_rowindextag = "";
rowIndex = 0;
SetInitialRow();
DataSet ds = new DataSet();
DataTable FromTable = new DataTable();
con.Open();
string cmdstr = "Select * from item";
SqlCommand cmd = new SqlCommand(cmdstr, con);
SqlDataAdapter adp = new SqlDataAdapter(cmd);
adp.Fill(ds);
Datalist1.DataSource = ds.Tables[0];
Datalist1.DataBind();
}

}
private void SetInitialRow()
{
DataTable dt = new DataTable();
DataRow dr = null;
dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
dt.Columns.Add(new DataColumn("Column1", typeof(string)));
dt.Columns.Add(new DataColumn("Column2", typeof(string)));
dt.Columns.Add(new DataColumn("Column3", typeof(string)));
dt.Columns.Add(new DataColumn("Column4", typeof(string)));
dr = dt.NewRow();
dr["RowNumber"] = 1;
dr["Column1"] = string.Empty;
dr["Column2"] = string.Empty;
dr["Column3"] = string.Empty;
dr["Column4"] = string.Empty;
dt.Rows.Add(dr);
//Store the DataTable in ViewState
ViewState["CurrentTable"] = dt;
GridView3.DataSource = dt;
GridView3.DataBind();
}

public void dl_item_command(Object sender, DataListCommandEventArgs e)
{
if (e.CommandName == "myevent") // check commandname here
{
int index = e.Item.ItemIndex;
Label lbl = (Label)Datalist1.Items[index].FindControl("Itmnamelbl");
Label4.Text = lbl.Text;
Label lbl1 = (Label)Datalist1.Items[index].FindControl("Itmcodelbl");
int v_code = Convert.ToInt32(lbl1.Text);
AddNewRowToGrid();
}

}
private void AddNewRowToGrid()
{
rowIndex = 0;
if (ViewState["CurrentTable"] != null)
{
DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
DataRow drCurrentRow = null;
if (dtCurrentTable.Rows.Count > 0)
{
for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
{
//adding new row to grid
drCurrentRow = dtCurrentTable.NewRow();
drCurrentRow["RowNumber"] = i + 1;
//extract the TextBox values
TextBox box1 = (TextBox)GridView3.Rows[rowIndex].Cells[1].FindControl("TextBox1");
TextBox box2 = (TextBox)GridView3.Rows[rowIndex].Cells[2].FindControl("TextBox2");
TextBox box3 = (TextBox)GridView3.Rows[rowIndex].Cells[3].FindControl("TextBox3");
TextBox box4 = (TextBox)GridView3.Rows[rowIndex].Cells[4].FindControl("TextBox4");
//box1.Text = Label4.Text;
dtCurrentTable.Rows[i - 1]["Column1"] = box1.Text;
dtCurrentTable.Rows[i - 1]["Column2"] = box2.Text;
dtCurrentTable.Rows[i - 1]["Column3"] = box3.Text;
dtCurrentTable.Rows[i - 1]["Column4"] = box4.Text;
rowIndex++;
v_rowindextag = "*";
}

}
dtCurrentTable.Rows.Add(drCurrentRow);
ViewState["CurrentTable"] = dtCurrentTable;
GridView3.DataSource = dtCurrentTable;
GridView3.DataBind();
}
else
{
Response.Write("ViewState is null");
}
//Set Previous Data on Postbacks
SetPreviousData();
}

private void SetPreviousData()
{
rowIndex =0;
if (ViewState["CurrentTable"] != null)
{
DataTable dt = (DataTable)ViewState["CurrentTable"];
if (dt.Rows.Count > 0)
{
for (int i =v_int; i < dt.Rows.Count; i++)
{
TextBox box1 = (TextBox)GridView3.Rows[rowIndex].Cells[1].FindControl("TextBox1");
TextBox box2 = (TextBox)GridView3.Rows[rowIndex].Cells[2].FindControl("TextBox2");
TextBox box3 = (TextBox)GridView3.Rows[rowIndex].Cells[3].FindControl("TextBox3");
TextBox box4 = (TextBox)GridView3.Rows[rowIndex].Cells[4].FindControl("TextBox4");
box1.Text = dt.Rows[i]["Column1"].ToString();
box2.Text = dt.Rows[i]["Column2"].ToString();
box3.Text = dt.Rows[i]["Column3"].ToString();
box4.Text = dt.Rows[i]["Column4"].ToString();
rowIndex++;
}
}
}

推荐答案

你好SR



这里我发送我的逻辑,希望它能帮到你



Hi S.R.

here i am sending my logic, hope it'll help you

//vitual table
   public static DataTable Table()
   {
       DataTable dtGrd = new DataTable();
       dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
       dt.Columns.Add(new DataColumn("Column1", typeof(string)));
       dt.Columns.Add(new DataColumn("Column2", typeof(string)));
       dt.Columns.Add(new DataColumn("Column3", typeof(string)));
       dt.Columns.Add(new DataColumn("Column4", typeof(string)));
       return dtGrd;
   }





public void dl_item_command(Object sender,DataListCommandEventArgs e)

{

if(e.CommandName ==myevent)//在这里检查命令名

{

int index = e.Item.ItemIndex;

Label lbl =(Label)Datalist1.Items [index] .FindControl(Itmnamelbl);

Label4.Text = lbl.Text;

Label lbl1 =(Label)Datalist1.Items [index] .FindControl(Itmcodelbl);

TextBox TB1 =(TextBox)Datalist1.Items [index] .FindControl(TB1);

TextBox TB2 =(TextBox)Datalist1.Items [index] .FindControl(TB2);

int v_code = Convert.ToInt32(lbl1.Text);

DataRow dr = dtdata.NewRow();

dr = dt.NewRow();

dr [RowNumber] = 1;

dr [Column1] = lbl.Text;

dr [Column2] = lbl1.Text;

dr [Column3] = TB1。文字;

dr [Column4] = TB2.Text;

dt.Rows.Add(dr);

//存储ViewState中的DataTable

Vi ewState [CurrentTable] = dt;

GridView3.DataSource = dt;

GridView3.DataBind();

// AddNewRowToGrid() ;

}

}



public void dl_item_command(Object sender, DataListCommandEventArgs e)
{
if (e.CommandName == "myevent") // check commandname here
{
int index = e.Item.ItemIndex;
Label lbl = (Label)Datalist1.Items[index].FindControl("Itmnamelbl");
Label4.Text = lbl.Text;
Label lbl1 = (Label)Datalist1.Items[index].FindControl("Itmcodelbl");
TextBox TB1 = (TextBox)Datalist1.Items[index].FindControl("TB1");
TextBox TB2 = (TextBox)Datalist1.Items[index].FindControl("TB2");
int v_code = Convert.ToInt32(lbl1.Text);
DataRow dr = dtdata.NewRow();
dr = dt.NewRow();
dr["RowNumber"] = 1;
dr["Column1"] = lbl.Text;
dr["Column2"] = lbl1.Text;
dr["Column3"] = TB1.Text;
dr["Column4"] = TB2.Text;
dt.Rows.Add(dr);
//Store the DataTable in ViewState
ViewState["CurrentTable"] = dt;
GridView3.DataSource = dt;
GridView3.DataBind();
//AddNewRowToGrid();
}
}


这篇关于无法从datalist选择中动态地将值传递到gridview中的文本框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆