我的想法是:在gridview的編輯狀態下,點某列中的一按鈕,彈出一個層,然後將層中的某值賦給gridview中的TextBox,我試了很久,都沒有成功,請大家指導...謝謝!!

解决方案 »

  1.   

    什么意思?
    给你一个修改的例子。楼主再根据你的具体情况修改一下。//前台,
    <asp:GridView ID="GridView1" runat="server" Width="100%" CellPadding="4" ForeColor="#333333"
                                AutoGenerateColumns="False" AllowPaging="True" PageSize="12" OnRowCancelingEdit="GridView1_RowCancelingEdit"
                                OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowDeleting="GridView1_RowDeleting"
                                DataKeyNames="id,name" OnPageIndexChanging="GridView1_PageIndexChanging" DataMember="card,price" OnRowDataBound="GridView1_RowDataBound" GridLines="None">
                                <Columns>
                                    <asp:BoundField HeaderText="身份证号" DataField="card" Visible=False />
                                    <asp:TemplateField HeaderText="编号">
                                        <ItemTemplate>
                                            <%# Eval("id")%>
                                        </ItemTemplate>
                                        <ItemStyle Width="50px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="姓名">
                                        <ItemTemplate>
                                            <%# Eval("name")%>
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:TextBox ID="TBName" Text='<%# Eval("name") %>' runat="server" Width="80px" />
                                        </EditItemTemplate>
                                        <ItemStyle Width="90px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="身份证号">
                                        <ItemTemplate>
                                            <%# Eval("card") %>
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:TextBox ID="TBCard" Text='<%# Eval("card") %>' runat="server" Width="90px" />
                                        </EditItemTemplate>
                                        <ItemStyle Width="100px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="学历">
                                        <ItemTemplate>
                                            <%# Eval("description")%>
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:HiddenField ID="HDFXueli" runat="server" Value='<%# Eval("xueli") %>' />
                                            <asp:DropDownList ID="DDLXueli" runat="server" Width="90px" />
                                        </EditItemTemplate>
                                       <ItemStyle Width="100px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="价格">
                                        <ItemTemplate>
                                            <%# Eval("price") %>
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:TextBox ID="TBPrice" Text='<%# Eval("price") %>' runat="server" Width="90px" />
                                        </EditItemTemplate>
                                        <ItemStyle Width="100px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="建立时间">
                                        <ItemTemplate>
                                            <%# Eval("createdate") %>
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:TextBox ID="TBCreateDate" Text='<%# Eval("createdate") %>' runat="server" Width="140px" />
                                        </EditItemTemplate>
                                        <ItemStyle Width="150px" />
                                    </asp:TemplateField>
                                    
                                    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" HeaderText="操作" />                              
                                </Columns>
                                
                                <PagerSettings FirstPageText="" LastPageText="" NextPageText="" PreviousPageText="" />
                                <RowStyle Height="20px" BackColor="#F7F6F3" ForeColor="#333333" />
                                <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                <EditRowStyle BackColor="#999999" />
                                <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                                <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                                <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                            </asp:GridView>
      

  2.   


    //后台:
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                GridViewBind();
            }
        }    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            GridViewBind();
        }    private void GridViewBind()
        {
            string connStr = System.Configuration.ConfigurationSettings.AppSettings["lj"];
            string SqlStr = "SELECT a.*,b.description FROM test01 a,xueli b where a.xueli=b.code";
            DataSet ds = new DataSet();        try
            {
                SqlConnection conn = new SqlConnection(connStr);
                if (conn.State.ToString() == "Closed") conn.Open();
                SqlDataAdapter da = new SqlDataAdapter(SqlStr, conn);
                da.Fill(ds, "test01");
                if (conn.State.ToString() == "Open") conn.Close();            GridView1.DataSource = ds.Tables[0].DefaultView;
                GridView1.DataBind();
            }
            catch (Exception ex)
            {
                Response.Write("数据库错误,错误原因:" + ex.Message);
                Response.End();
            }
        }    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (((DropDownList)e.Row.FindControl("DDLXueli")) != null)
            {
                DropDownList ddlxueli = (DropDownList)e.Row.FindControl("DDLXueli");            //  生成 DropDownList 的值,绑定数据
                string connStr = System.Configuration.ConfigurationSettings.AppSettings["lj"];
                string SqlStr = "SELECT * from xueli";
                DataSet ds = new DataSet();            SqlConnection conn = new SqlConnection(connStr);
                if (conn.State.ToString() == "Closed") conn.Open();
                SqlDataAdapter da = new SqlDataAdapter(SqlStr, conn);
                da.Fill(ds, "xueli");
                if (conn.State.ToString() == "Open") conn.Close();            ddlxueli.DataSource = ds.Tables[0].DefaultView;
                ddlxueli.DataTextField = "description";
                ddlxueli.DataValueField = "code";
                ddlxueli.DataBind();
                //            //  选中 DropDownList
                ddlxueli.SelectedValue = ((HiddenField)e.Row.FindControl("HDFXueli")).Value;
                //
            }
        }    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            GridViewBind();
        }
        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
            GridViewBind();
        }    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            string id = GridView1.DataKeys[e.RowIndex].Values[0].ToString();
            string card = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TBCard")).Text;
            string xueli = ((DropDownList)GridView1.Rows[e.RowIndex].FindControl("DDLXueli")).SelectedValue;
            string price = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TBPrice")).Text;        string connStr = System.Configuration.ConfigurationSettings.AppSettings["lj"];
            string SqlStr = "update test01 set card='" + card + "',xueli='" + xueli + "',price='" + price + "' where id=" + id;        try
            {
                SqlConnection conn = new SqlConnection(connStr);
                if (conn.State.ToString() == "Closed") conn.Open();
                SqlCommand comm = new SqlCommand(SqlStr, conn);
                comm.ExecuteNonQuery();
                comm.Dispose();
                if (conn.State.ToString() == "Open") conn.Close();            GridView1.EditIndex = -1;
                GridViewBind();
            }
            catch (Exception ex)
            {
                Response.Write("数据库错误,错误原因:" + ex.Message);
                Response.End();
            }
        }    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            string id = GridView1.DataKeys[e.RowIndex].Values[0].ToString();
            string connStr = System.Configuration.ConfigurationSettings.AppSettings["lj"];
            string SqlStr = "delete from test01 where id=" + id;        try
            {
                SqlConnection conn = new SqlConnection(connStr);
                if (conn.State.ToString() == "Closed") conn.Open();
                SqlCommand comm = new SqlCommand(SqlStr, conn);
                comm.ExecuteNonQuery();
                comm.Dispose();
                if (conn.State.ToString() == "Open") conn.Close();            GridView1.EditIndex = -1;
                GridViewBind();
            }
            catch (Exception ex)
            {
                Response.Write("数据库错误,错误原因:" + ex.Message);
                Response.End();
            }
        }
      

  3.   

    你的這種方法,不能實現我的要求。
    但還是很感謝,我的想要的是:在gridview同一列模板中,有一個textbox,和一個button控件,我希望在我點button處發click事件後,彈出一個層,然後點層中的一button按鈕把層中的某值寫入到該模板列中的textboxt。主要實現的是這個功能謝謝
      

  4.   

     楼上的跟LZ问的好像挂不上沟哦???
    LZ分步骤来解答:
    1.单击GrdiView某个按钮就弹出一个层。这个可以用js来控制层的显示隐藏。这个div  LZ可以在那个页面提前设计好。调用的时候就控制居中显示就行。
    2.层中的某个控件的值传递到GridView的那个编辑TextBox框,这个不会。难在于如何获取到这个TextBox的ID,如果可以获取的话。那就可以通过js来给值
      

  5.   

    AJAX吧POPO控件完全满足你的需求给你个例子
     <asp:Repeater ID="rptServerSearch" runat="server" OnItemCommand="rptServerSearch_ItemCommand">
                                     <ItemTemplate>
                                    <div class="row">
                                    <div class="input">
                                       <asp:CheckBox ID="cbxSonger" runat="server"/>
                                    </div>
                                    <input type="hidden" name="songer" id="songer" value="<%#Eval("url") %>|<%#Eval("lrc") %>" />
                                    <asp:HiddenField id="songerser" runat="server" value='<%#Eval("url") %> ' />
                                        <asp:HiddenField id="songers" runat="server" value='<%#Eval("lrc") %>' />
                                        <asp:HiddenField id="titles" runat="server" value='<%#Eval("title") %>' />
                                    <div class="name">
                                        <asp:LinkButton ID="lbtPlay" CssClass="songname_font" CommandName="Play" runat="server">
                                            <asp:Label ID="lblMusicName" runat="server" Text='<%#Eval("title")%>'></asp:Label>
                                        </asp:LinkButton>
                                    </div>
                                    <div class="songer"><asp:Label ID="lblSinger" runat="server" Text='<%#Eval("singer") %>'></asp:Label></div>
                                    <div class="save">
                                        <asp:LinkButton ID="lbtSaveMusic" CommandName="save" runat="server">保存</asp:LinkButton></div>
                                        
                                        <ajaxToolkit:ConfirmButtonExtender ID="ConfirmButtonExtender1" runat="server" 
                                            TargetControlID="lbtSaveMusic" 
                                            DisplayModalPopupID="ModalPopupExtender1">
                                            </ajaxToolkit:ConfirmButtonExtender>
                                            <ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server" 
                                                TargetControlID="lbtSaveMusic" 
                                                PopupControlID="pnlSaveMusic" 
                                                OkControlID="btnAddOk" 
                                                CancelControlID="btnAddCl" 
                                                BackgroundCssClass="modalBackground" /> 
                                    </div>
                                    </ItemTemplate>
                            </asp:Repeater>
      

  6.   

    楼主可以考虑用Gridview+detailsview
    不要用弹出了 !
    看孟子的
    http://dotnet.aspx.cc/article/2cb1c6d7-2b22-4655-8922-2a8a053a66fa/read.aspx
    http://dotnet.aspx.cc/article/33e3cfc4-7cf1-48f1-a013-45ff9fa06e03/read.aspx
    http://dotnet.aspx.cc/article/f73eeaa9-2bdc-47fd-afd2-59f2fa4897f5/read.aspx
      

  7.   

    "难在于如何获取到这个TextBox的ID"
    我現在就嚓在這,不知如何取得其id!!!
      

  8.   

    ajax我用的比較少,
    我現在最想知道的是:我的這種想法現實嗎?能不能實現
      

  9.   

    你在生成GRIDVIEW的时候,对TEXTBOX的ID号生成要有规律.
    同一行点击的那个赋值按钮,在生成行时,对赋值按钮的onclick属性设置函数,规律对应TEXTBOX的ID生成.
    这样你执行同一行的赋值时,就能取到对应的TEXTBOX的ID号了