gridview取值的問題? 我的想法是:在gridview的編輯狀態下,點某列中的一按鈕,彈出一個層,然後將層中的某值賦給gridview中的TextBox,我試了很久,都沒有成功,請大家指導...謝謝!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 什么意思?给你一个修改的例子。楼主再根据你的具体情况修改一下。//前台,<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> //后台: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(); } } 你的這種方法,不能實現我的要求。但還是很感謝,我的想要的是:在gridview同一列模板中,有一個textbox,和一個button控件,我希望在我點button處發click事件後,彈出一個層,然後點層中的一button按鈕把層中的某值寫入到該模板列中的textboxt。主要實現的是這個功能謝謝 楼上的跟LZ问的好像挂不上沟哦???LZ分步骤来解答:1.单击GrdiView某个按钮就弹出一个层。这个可以用js来控制层的显示隐藏。这个div LZ可以在那个页面提前设计好。调用的时候就控制居中显示就行。2.层中的某个控件的值传递到GridView的那个编辑TextBox框,这个不会。难在于如何获取到这个TextBox的ID,如果可以获取的话。那就可以通过js来给值 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> 楼主可以考虑用Gridview+detailsview不要用弹出了 !看孟子的http://dotnet.aspx.cc/article/2cb1c6d7-2b22-4655-8922-2a8a053a66fa/read.aspxhttp://dotnet.aspx.cc/article/33e3cfc4-7cf1-48f1-a013-45ff9fa06e03/read.aspxhttp://dotnet.aspx.cc/article/f73eeaa9-2bdc-47fd-afd2-59f2fa4897f5/read.aspx "难在于如何获取到这个TextBox的ID"我現在就嚓在這,不知如何取得其id!!! ajax我用的比較少,我現在最想知道的是:我的這種想法現實嗎?能不能實現 你在生成GRIDVIEW的时候,对TEXTBOX的ID号生成要有规律.同一行点击的那个赋值按钮,在生成行时,对赋值按钮的onclick属性设置函数,规律对应TEXTBOX的ID生成.这样你执行同一行的赋值时,就能取到对应的TEXTBOX的ID号了 sql 语句小问题,知道的帮个忙 asp.net怎样实现将大量图片上传 未将对象引用设置到对象的实例。 这是怎么回事? 怎么绑定 顺便散粉 asp.net添加数据库的问题 VS2005,关于WEB.CONGIG,在生成网站时web.config出现如下22个消息,错在哪里? 请问哪有学asp.net三层结构的视频教程下载啊? 为什么在本机测试的好使,传到服务器上就Sa登陆失败呢? 如何自动更新SQL的全文索引? 全国省市级联特效 IIS假死怎么解决[总结贴] DropDownList 转为数组
给你一个修改的例子。楼主再根据你的具体情况修改一下。//前台,
<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>
//后台:
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();
}
}
但還是很感謝,我的想要的是:在gridview同一列模板中,有一個textbox,和一個button控件,我希望在我點button處發click事件後,彈出一個層,然後點層中的一button按鈕把層中的某值寫入到該模板列中的textboxt。主要實現的是這個功能謝謝
LZ分步骤来解答:
1.单击GrdiView某个按钮就弹出一个层。这个可以用js来控制层的显示隐藏。这个div LZ可以在那个页面提前设计好。调用的时候就控制居中显示就行。
2.层中的某个控件的值传递到GridView的那个编辑TextBox框,这个不会。难在于如何获取到这个TextBox的ID,如果可以获取的话。那就可以通过js来给值
<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>
不要用弹出了 !
看孟子的
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
我現在就嚓在這,不知如何取得其id!!!
我現在最想知道的是:我的這種想法現實嗎?能不能實現
同一行点击的那个赋值按钮,在生成行时,对赋值按钮的onclick属性设置函数,规律对应TEXTBOX的ID生成.
这样你执行同一行的赋值时,就能取到对应的TEXTBOX的ID号了