Gridview中Dropdownlist的刷新问题

hejunlr 2014-11-10 12:59:21
因为要动态增加行,所以上网找了好久,才找到神贴
http://www.cnblogs.com/psforever/archive/2011/02/23/1963207.html
但是因为我这里面要用到Dropdownlist,数据绑定没做起来,就做成了静态的ListItem,目前功能基本实现,但是每次增加行的时候,Dropdownlist内容又恢复原始状态,实在搞不定了,求教各位大神!
如果能帮小弟动态绑定Dropdownlist,感激不尽!

页面代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="zlgcSYS.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>GridView中实现动态动态增加删除行</title>
<style type="text/css">
.hide{
display:none;
}
</style>
<script type="text/javascript">
//选中所有行
function SelectAll(chkAll)
{
var gridview = document.getElementById("GridView1");
if (gridview)
{
//获取到GridView1中的所有input标签
var inputs = gridview.getElementsByTagName("input");
for(var i=0;i<inputs.length;i++)
{
if (inputs[i].type=="checkbox")
{
//设置所有checkbox的选中状态与chkAll一致
inputs[i].checked = chkAll.checked;
}
}
}
}

//给选中行换背景色
function checkRow(chkRow)
{
var row = chkRow.parentNode.parentNode;
if(row)
{
if (chkRow.checked)
row.style.backgroundColor="#7799CC";
else
row.style.backgroundColor="#FFFFFF";
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:LinkButton ID="lbtnAddRow" runat="server" Width="80px" OnClick="lbtnAddRow_Click">添加行</asp:LinkButton>
<asp:LinkButton ID="btnDeleteRow" runat="server" OnClick="btnDeleteRow_Click" OnClientClick="return confirm('确定要删除选中行吗?');">删除选中行</asp:LinkButton>
</div>
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
CellPadding="4" ForeColor="#333333"
onrowdatabound="GridView1_RowDataBound">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" >
<ItemStyle CssClass="hide" BorderColor="#507CD1" />
<HeaderStyle CssClass="hide" />
</asp:BoundField>
<asp:TemplateField HeaderText="序号">
<ItemTemplate>
<%# Container.DataItemIndex + 1%>
</ItemTemplate>
<ItemStyle BorderColor="#507CD1" HorizontalAlign="Center" BorderWidth="1px" />
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<input id="chkAll" type="checkbox" onclick="SelectAll(this)" />
</HeaderTemplate>
<ItemTemplate>
<input id="chkRow" type="checkbox" onclick="checkRow(this);" runat="server" />
</ItemTemplate>
<ItemStyle Width="30px" HorizontalAlign="Center" BorderColor="#507CD1" BorderWidth="1px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="经费项目">
<ItemTemplate>
<asp:DropDownList ID="ddlxm" runat="server" AutoPostBack="True">
<asp:ListItem>调研差旅费</asp:ListItem>
<asp:ListItem>管理费</asp:ListItem>
<asp:ListItem>会议费</asp:ListItem>
<asp:ListItem>劳务费</asp:ListItem>
<asp:ListItem>设备购置和使用费</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
<ItemStyle Width="100px" BorderColor="#507CD1" BorderWidth="1px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="经济科目">
<ItemTemplate>
<asp:DropDownList ID="ddlkm" runat="server" AutoPostBack="True">
<asp:ListItem>印刷费</asp:ListItem>
<asp:ListItem>咨询费</asp:ListItem>
<asp:ListItem>劳务费</asp:ListItem>
<asp:ListItem>差旅费</asp:ListItem>
<asp:ListItem>邮电费</asp:ListItem>
<asp:ListItem>专用设备购置费</asp:ListItem>
<asp:ListItem>会议费</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
<ItemStyle Width="100px" BorderColor="#507CD1" BorderWidth="1px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="输入金额">
<ItemTemplate>
<asp:TextBox ID="txtje" runat="server" Text='<%# Bind("je") %>' BorderStyle="None"></asp:TextBox>
</ItemTemplate>
<ItemStyle Width="100px" BorderColor="#507CD1" BorderWidth="1px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="支出说明">
<ItemTemplate>
<asp:TextBox ID="txtsm" runat="server" Text='<%# Bind("sm") %>' BorderStyle="None"></asp:TextBox>
</ItemTemplate>
<ItemStyle Width="100px" BorderColor="#507CD1" BorderWidth="1px" />
</asp:TemplateField>
</Columns>
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
</asp:GridView>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
</div>
</form>
</body>
</html>
...全文
306 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangweimutou 2014-11-12
  • 打赏
  • 举报
回复
xiao_2528276651 2014-11-11
  • 打赏
  • 举报
回复
GridView中嵌套Dropdownlist商品预售查询刷新示例 //GridView设置查询刷新商品信息 查找产品的关键字:<asp:TextBox ID="tbSearch" runat="server"></asp:TextBox> <asp:Button ID="btnSearch" runat="server" Text="搜索" Width="44px" onclick="btnSearch_Click" /> <asp:Button ID="btnReturn" runat="server" onclick="btnReturn_Click" Text="返回" /> <div> <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" DataKeyNames="产品编号" ShowFooter="True" Width="642px" OnRowCreated="GridView1_RowCreated" OnRowDataBound="GridView1_RowDataBound" onpageindexchanging="GridView1_PageIndexChanging" PageSize="5" onrowediting="GridView1_RowEditing" onrowupdating="GridView1_RowUpdating" style="font-size: small"> <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" /> <Columns> <asp:TemplateField HeaderText="产品名称"> <ItemTemplate> <%#HightLightText((string)Eval("产品"), this.tbSearch.Text.Trim())%> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="单价" HeaderText="单价" SortExpression="单价" ReadOnly="True" /> <asp:BoundField DataField="库存量" HeaderText="库存量" SortExpression="库存量" ReadOnly="True" /> <asp:BoundField DataField="已订购量" HeaderText="已订购量" SortExpression="已订购量" ReadOnly="True" /> <asp:TemplateField HeaderText="订货金额" SortExpression="订货金额"> <EditItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Eval("订货金额", "{0:c}") %>'></asp:Label> </EditItemTemplate> <FooterTemplate> <asp:Label ID="OrderTotalLabel" runat="server" Font-Underline="True" ForeColor="Red"></asp:Label> </FooterTemplate> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("订货金额", "{0:c}") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="是否停售"> <EditItemTemplate> <asp:DropDownList ID="ddlSellState" runat="server" AutoPostBack="True"> <asp:ListItem Value="True">停售</asp:ListItem> <asp:ListItem Value="False">不停售</asp:ListItem> </asp:DropDownList> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label4" runat="server" Text='<%# Eval("SellState") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:CommandField HeaderText="设置" ShowEditButton="True" /> </Columns> <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" /> <SelectedRowStyle BackColor="#C0FFC0" Font-Bold="True" ForeColor="Black" /> <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" /> <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" /> </asp:GridView> // strKey为原始内容,keyworld为搜索的关键字 protected string HightLightText(string strKey, string keyworld) { if (keyworld == "")//如果查询关键字为空返回原内容 { return strKey; } string strReturn = strKey.Replace(keyworld, "<span class='highlightTxtSearch'>" + keyworld + "</span>"); return strReturn; } //查询关键字显示数据 protected void btnSearch_Click(object sender, EventArgs e) { string sqlstr = "select 产品编号, 产品, 单价, 库存量, 已订购量, 订单日期,单价 * 已订购量 AS 订货金额,CASE 是否停售 WHEN 'False' THEN '不停售' ELSE '停售' END AS SellState from tb_OrderForm where 产品 like '%" + tbSearch.Text + "%'"; sd.BindData(GridView1, sqlstr); } //GridView中嵌套:DropDownList设置数据 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { int ID=int.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString()); bool PaperState = bool.Parse(((DropDownList)GridView1.Rows[e.RowIndex].FindControl("ddlSellState")).SelectedValue); string strsql = "UPDATE tb_OrderForm SET 是否停售 = @SellState WHERE 产品编号= @ID"; SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); conn.Open(); SqlCommand comm = new SqlCommand(strsql, conn); comm.Parameters.Add(new SqlParameter("@ID", SqlDbType.Int, 4)); comm.Parameters["@ID"].Value = ID; comm.Parameters.Add(new SqlParameter("@SellState", SqlDbType.Bit, 1)); comm.Parameters["@SellState"].Value = PaperState; if (Convert.ToInt32(comm.ExecuteNonQuery()) > 0) { Response.Write("<script language=javascript>alert('设置成功!');location='Default.aspx'</script>"); } else { Response.Write("<script language=javascript>alert('设置失败!');location='Default.aspx'</script>"); } //取消编辑操作 GridView1.EditIndex = -1; //调用自定义方法DbBind()重新绑定GridView控件中信息 DbBind(); } //其他设置(略)
hejunlr 2014-11-10
  • 打赏
  • 举报
回复
后台代码:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.OleDb;

namespace zlgcSYS
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                DataTable table = new DataTable();
                table.Columns.Add(new DataColumn("ID"));
                table.Columns.Add(new DataColumn("xm"));
                table.Columns.Add(new DataColumn("km"));
                table.Columns.Add(new DataColumn("je"));
                table.Columns.Add(new DataColumn("sm"));
                DataRow row = table.NewRow(); table.Rows.Add(row);
                GridView1.DataSource = table; GridView1.DataBind();
                //bind();
            }
        }
        protected void lbtnAddRow_Click(object sender, EventArgs e)
        {
            DataTable table = GetGridViewData();
            DataRow newRow = table.NewRow();
            newRow["ID"] = Guid.NewGuid().ToString();
            table.Rows.Add(newRow);
            GridView1.DataSource = table;
            GridView1.DataBind();
        }
        private DataTable GetGridViewData()
        {
            DataTable table = new DataTable();
            table.Columns.Add(new DataColumn("ID"));
            table.Columns.Add(new DataColumn("xm"));
            table.Columns.Add(new DataColumn("km"));
            table.Columns.Add(new DataColumn("je"));
            table.Columns.Add(new DataColumn("sm"));
            foreach (GridViewRow row in GridView1.Rows)
            {
                DataRow sourseRow = table.NewRow();
                sourseRow["ID"] = row.Cells[0].Text;
                sourseRow["xm"] = ((DropDownList)row.Cells[3].FindControl("ddlxm")).Text;
                sourseRow["km"] = ((DropDownList)row.Cells[4].FindControl("ddlkm")).Text;
                sourseRow["je"] = ((TextBox)row.Cells[5].FindControl("txtje")).Text;
                sourseRow["sm"] = ((TextBox)row.Cells[6].FindControl("txtsm")).Text;
                table.Rows.Add(sourseRow);
            }
            return table;
        }
        protected void btnDeleteRow_Click(object sender, EventArgs e)
        {
            DataTable table = GetGridViewData();
            foreach (GridViewRow row in GridView1.Rows)
            {
                if (((HtmlInputCheckBox)row.Cells[2].FindControl("chkRow")).Checked)
                {
                    foreach (DataRow dtRow in table.Rows)
                    {
                        if (dtRow["ID"].ToString() == row.Cells[0].Text)
                        {
                            table.Rows.Remove(dtRow);
                            break;
                        }
                    }
                }
            }
            GridView1.DataSource = table;
            GridView1.DataBind();
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            DataTable myDt = new DataTable();
            myDt = GetGridViewData();
            myDt.PrimaryKey = new System.Data.DataColumn[] { myDt.Columns["Id"] };

            String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + System.Web.HttpContext.Current.Server.MapPath("App_Data/zlgc_Data.mdb");
            OleDbConnection conn = new OleDbConnection(connectionString);
            OleDbDataAdapter adapt = new OleDbDataAdapter();
            string sqlQuery = "insert into tb_Txinfo (xmId,xm,km,je,sm) values(@ID,@xm,@km,@je,@sm)";
            var cmd = new OleDbCommand(sqlQuery, conn);
            cmd.Parameters.Add("@xmId", OleDbType.Integer, 40, "ID");
            cmd.Parameters.Add("@xm", OleDbType.VarChar, 40, "xm");
            cmd.Parameters.Add("@km", OleDbType.VarChar, 20, "km");
            cmd.Parameters.Add("@je", OleDbType.Integer, 40, "je");
            cmd.Parameters.Add("@sm", OleDbType.VarChar, 40, "sm");
            adapt.InsertCommand = cmd;
            OleDbCommandBuilder builder = new OleDbCommandBuilder(adapt);
            builder.QuotePrefix = "[";
            builder.QuoteSuffix = "]";
            adapt.Update(myDt);
        }

        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
        }

    }
}
hejunlr 2014-11-10
  • 打赏
  • 举报
回复
引用 8 楼 insus 的回复:
[quote=引用 5 楼 hejunlr 的回复:] 杨老师,您好,其实我一上午主要都在看您的 DropDownList在GridView编辑时联动选择 http://www.cnblogs.com/insus/articles/1411016.html#2053183 但是因为我用的是Access数据库,所以存储过程实现不了,您的文章里的效果应该更好! 可否将源码发给我参考下?
时隔太久,源码只能看那篇的评论的vb.net版本。[/quote] 好的,我再试试看吧!感谢您的指导!
insus 2014-11-10
  • 打赏
  • 举报
回复
引用 5 楼 hejunlr 的回复:
杨老师,您好,其实我一上午主要都在看您的 DropDownList在GridView编辑时联动选择 http://www.cnblogs.com/insus/articles/1411016.html#2053183 但是因为我用的是Access数据库,所以存储过程实现不了,您的文章里的效果应该更好! 可否将源码发给我参考下?
时隔太久,源码只能看那篇的评论的vb.net版本。
hejunlr 2014-11-10
  • 打赏
  • 举报
回复
引用 6 楼 insus 的回复:
或者你可以视每一行为一个对象,所有创建一行,就是创建一个对象,显示再显示此对象内容即可: http://www.cnblogs.com/insus/p/3247935.html
这种功能我已经达到了!只是想做的更完善一些!
insus 2014-11-10
  • 打赏
  • 举报
回复
或者你可以视每一行为一个对象,所有创建一行,就是创建一个对象,显示再显示此对象内容即可: http://www.cnblogs.com/insus/p/3247935.html
hejunlr 2014-11-10
  • 打赏
  • 举报
回复
杨老师,您好,其实我一上午主要都在看您的 DropDownList在GridView编辑时联动选择 http://www.cnblogs.com/insus/articles/1411016.html#2053183 但是因为我用的是Access数据库,所以存储过程实现不了,您的文章里的效果应该更好! 可否将源码发给我参考下?
insus 2014-11-10
  • 打赏
  • 举报
回复
insus 2014-11-10
  • 打赏
  • 举报
回复
如果先是把第一行做成一个用户控件,然后动态添加: http://www.cnblogs.com/insus/p/3148345.html

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧