html代码如下:
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label ID=id1 Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"id")%>'>
</asp:Label>
<asp:Label ID=num Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"title")%>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="Label1" Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"id")%>'>
</asp:Label>
<asp:TextBox ID=title Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"id")%>' >
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn EditText="编辑" CancelText="取消" UpdateText="更新"></asp:EditCommandColumn>
</Columns>
public void myDatagrid_update(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//myDatagrid.EditItemIndex=e.Item.ItemIndex;
int newsid1=Convert.ToInt32(myDatagrid.DataKeys[e.Item.ItemIndex]);
Response.Write(newsid1+"<BR>");
string newName;
TextBox box;
box = (TextBox)(e.Item.Cells[1].FindControl("title"));
//box = (TextBox)(e.Item.Cells[1].Controls[0]);
newName = box.Text;
string tt=box.ID;
Response.Write(e.Item.Cells[1].FindControl("title")+tt); Response.Write(newName); System.Data.SqlClient.SqlCommand Objcmd1=new SqlCommand();
Objcmd1.Connection=Objconn;
Objcmd1.CommandText="update news set title='"+newName+"'";// where id='"+newsid1+"'
Objcmd1.ExecuteNonQuery();
myDatagrid.EditItemIndex=-1;
grid_bind();
}为什么编辑的时候总不能取到title更改后的值,总是原来的那个值!帮帮我!
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label ID=id1 Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"id")%>'>
</asp:Label>
<asp:Label ID=num Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"title")%>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="Label1" Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"id")%>'>
</asp:Label>
<asp:TextBox ID=title Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"id")%>' >
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn EditText="编辑" CancelText="取消" UpdateText="更新"></asp:EditCommandColumn>
</Columns>
public void myDatagrid_update(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//myDatagrid.EditItemIndex=e.Item.ItemIndex;
int newsid1=Convert.ToInt32(myDatagrid.DataKeys[e.Item.ItemIndex]);
Response.Write(newsid1+"<BR>");
string newName;
TextBox box;
box = (TextBox)(e.Item.Cells[1].FindControl("title"));
//box = (TextBox)(e.Item.Cells[1].Controls[0]);
newName = box.Text;
string tt=box.ID;
Response.Write(e.Item.Cells[1].FindControl("title")+tt); Response.Write(newName); System.Data.SqlClient.SqlCommand Objcmd1=new SqlCommand();
Objcmd1.Connection=Objconn;
Objcmd1.CommandText="update news set title='"+newName+"'";// where id='"+newsid1+"'
Objcmd1.ExecuteNonQuery();
myDatagrid.EditItemIndex=-1;
grid_bind();
}为什么编辑的时候总不能取到title更改后的值,总是原来的那个值!帮帮我!
这样试试看
<asp:DataGrid id="myDatagrid" OnCancelCommand="myDatagrid_cancle" OnEditCommand="myDatagrid_edit"
OnUpdateCommand="myDatagrid_update" AutoGenerateColumns="False" style="Z-INDEX: 101; LEFT: 328px; POSITION: absolute; TOP: 40px"
runat="server">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label ID=id1 Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"id")%>'>
</asp:Label>
<asp:Label ID=num Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"title")%>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="Label1" Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"id")%>'>
</asp:Label>
<asp:TextBox ID="title" AutoPostBack="True" Runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn EditText="编辑" CancelText="取消" UpdateText="更新"></asp:EditCommandColumn>
</Columns>
</asp:DataGrid>CS:public void myDatagrid_edit(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
myDatagrid.EditItemIndex=e.Item.ItemIndex;
grid_bind();
}
public void myDatagrid_update(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//myDatagrid.EditItemIndex=e.Item.ItemIndex;
int newsid1=Convert.ToInt32(myDatagrid.DataKeys[e.Item.ItemIndex]);
//Response.Write(newsid1+"<BR>");
string newName;
TextBox title;
//box = (TextBox)(e.Item.Cells[0].FindControl("title"));
//box = (TextBox)(e.Item.FindControl("title"));
title =(TextBox)(e.Item.FindControl("title"));
//string tt=box.ID;
newName=title.Text;
//Response.Write(e.Item.Cells[1].FindControl("title")+tt);
// e.Item.FindControl("title").
Response.Write(newName); System.Data.SqlClient.SqlCommand Objcmd1=new SqlCommand();
Objcmd1.Connection=Objconn;
Objcmd1.CommandText="update news set title='"+newName+"'";// where id='"+newsid1+"'
Objcmd1.ExecuteNonQuery();
myDatagrid.EditItemIndex=-1;
grid_bind();
}
public void myDatagrid_cancle(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
myDatagrid.EditItemIndex=-1;
grid_bind();
} } }
总是不能取到输入到textbox中的新值!怎么回事?郁闷很久啦,快帮帮我吧!
<asp:DataGrid id="myDatagrid" OnCancelCommand="myDatagrid_cancle" OnEditCommand="myDatagrid_edit"
OnUpdateCommand="myDatagrid_update" OnItemDataBound="DataGrid1_ItemDataBound" AutoGenerateColumns="False" style="Z-INDEX: 101; LEFT: 144px; POSITION: absolute; TOP: 32px"
runat="server" ShowHeader="True">
<Columns>
<asp:TemplateColumn HeaderText="id号">
<ItemTemplate>
<table border="2">
<tr>
<td>
<asp:Label ID=id1 Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"id")%>'>
</asp:Label>
</td>
<td>
<asp:Label ID=title1 Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"title")%>'>
</asp:Label>
</td>
<td>
<asp:Label ID=tiem Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"dateandtime")%>'>
</asp:Label>
</td>
<td>
<asp:Label ID="Label1" Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"news_type")%>'>
</asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID=id2 Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"id")%>'>
</asp:Label>
<asp:TextBox ID=title Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"title")%>'>
</asp:TextBox>
<asp:TextBox ID=time1 Runat=server Text='<%#DataBinder.Eval(Container.DataItem,"dateandtime")%>'>
</asp:TextBox>
<asp:DropDownList ID="list" Runat="server">
<asp:ListItem Value="2">重点</asp:ListItem>
<asp:ListItem Value="1">普通</asp:ListItem>
<asp:ListItem Value="0">一般</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
</Columns>cs:部分
public void myDatagrid_edit(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
myDatagrid.EditItemIndex=e.Item.ItemIndex;
grid_bind();
}public void DataGrid1_ItemDataBound(object source, DataGridItemEventArgs e)
{
if(e.Item.ItemIndex>=0)
{
if (e.Item.ItemIndex ==myDatagrid.EditItemIndex)
{
int newsid2=Convert.ToInt32(myDatagrid.DataKeys[e.Item.ItemIndex]);
SqlCommand Objcmd2=new SqlCommand();
Objcmd2.Connection=Objconn;
Objcmd2.CommandText="select news_type,title from news where id='"+newsid2+"'";
System.Data.SqlClient.SqlDataReader Objreader=Objcmd2.ExecuteReader();
while (Objreader.Read())
{ DropDownList list = (DropDownList)e.Item.FindControl("news_type"); string type2=Objreader.GetValue(1).ToString();
Response.Write("zhou"+type2+"zhou"+"<BR>");
Response.Write(type2.GetHashCode().ToString()); //for(int i=0; i<2; i++)
//{
//list.Items.Add("Item" + i.ToString());
//if((type2.ToString().Equals(list.Items.FindByValue("0"))))
// list.SelectedIndex = i;
//for(int i=0;i<2;i++)
//{
//if (Convert.ToInt32(list.Items.Count)==2)
//list.SelectedIndex =1;
//list.SelectedItem
//
//}
}
Objreader.Close();
}
}
我想在当点击编辑的时候,出现的dropdownlist选中的项有数据库中确定.也就是当数据库中是1是,编辑的时候开始是普通被选中.该怎么处理???
{
((DropDownList)e.Item.FindControl("news_type")).selectValue = Objreader.GetValue(0).ToString();
}
这样应该可以。
----------------------------------------------
<%@Page debug=true%>
<%@Import Namespace="System.Data"%>
<script runat="server" Language="C#">
void Page_Load(object src,EventArgs e){
if(!Page.IsPostBack){
BindData();
}
}void BindData(){
DataTable table=(DataTable)Cache["testTable"];
if(table==null){
table=new DataTable();
table.Columns.Add(new DataColumn("姓名",typeof(string)));
table.Columns.Add(new DataColumn("性别",typeof(bool)));
table.Columns.Add(new DataColumn("年龄",typeof(int)));
DataRow row;
Random rdm=new Random();
int rint;
for(int i=0;i<10;i++){
rint=rdm.Next(20,30);
row=table.NewRow();
row["姓名"]="姓名_"+i.ToString();
row["性别"]=(rint%3==0);
row["年龄"]=rint;
table.Rows.Add(row);
}
Cache["testTable"]=table;
}
grid1.DataSource=table;
grid1.DataBind();
}void EditGrid(object src,DataGridCommandEventArgs e){
grid1.EditItemIndex=e.Item.ItemIndex;
BindData();
}void CancelEdit(object src,DataGridCommandEventArgs e){
grid1.EditItemIndex=-1;
BindData();
}void UpdateGrid(object src,DataGridCommandEventArgs e){
grid1.EditItemIndex=-1;
BindData();
}void BindItem(object src,DataGridItemEventArgs e){
if(e.Item.ItemType==ListItemType.EditItem){
DropDownList ddl=(DropDownList)e.Item.FindControl("ageddl");
if(ddl!=null){
ListItem litem;
for(int i=20;i<=30;i++){
litem=new ListItem(i.ToString());
ddl.Items.Add(litem);
if(i==(int)((DataRowView)e.Item.DataItem)["年龄"])
litem.Selected=true;
}
}
}
}
</script>
<HTML>
<HEAD>
<TITLE> Webdiyer 制造:) (www.webdiyer.com) </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="Webdiyer">
</HEAD><BODY>
<form runat="server">
<asp:DataGrid runat="server" id="grid1" width="50%" AutoGenerateColumns=false OnEditCommand="EditGrid" OnCancelCommand="CancelEdit" OnUpdateCommand="UpdateGrid" OnItemDataBound="BindItem">
<Columns>
<asp:EditCommandColumn EditText="编辑" CancelText="取消" UpdateText="更新" HeaderText="编辑"/>
<asp:BoundColumn DataField="姓名" HeaderText="姓名"/>
<asp:TemplateColumn HeaderText="性别">
<ItemTemplate>
<%#(bool)((DataRowView)Container.DataItem)["性别"]==true?"男":"女"%>
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox runat="server" id="sex" Checked=<%#(bool)((DataRowView)Container.DataItem)["性别"]==true%>/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="年龄">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem,"年龄")%>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" id="ageddl"/>
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<br>
<asp:Label runat="server" id="lbl"/>
</form>
</BODY>
</HTML>