代码如下,现在可以在页面上修改单元格的内容,想修改之后,通过点击“保存”按钮,将当页的数据update数据库! public static string sort { set; get; }
private static string strsql;
const string vsKey = "searchCriteria"; //ViewState key
SqlConnection con = new SqlConnection("server=localhost;database=moldsystem;uid=sa;pwd=sa");//这个是全局变量
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
searchOrders(string.Empty);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
AspNetPager1.CurrentPageIndex = 1;
string s = " where customer_name =" + TextBox4.Text;
ViewState[vsKey] = s;
searchOrders(s);
}
void searchOrders(string sWhere)
{
//SqlDataSource1.SelectCommand = "select * from " + sWhere + " ";
//DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
DataSet ds = new DataSet();
con.Open();
SqlDataAdapter sda = new SqlDataAdapter("select * from data_mold " + sWhere + " ", con);
sda.Fill(ds, "name");
con.Close();
AspNetPager1.RecordCount = ds.Tables["name"].Rows.Count; PagedDataSource pds = new PagedDataSource();
pds.DataSource = ds.Tables["name"].DefaultView;
pds.AllowPaging = true;
pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
pds.PageSize = AspNetPager1.PageSize;
Repeater1.DataSource = pds;
Repeater1.DataBind();
}
protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
//this.AspNetPager1.CurrentPageIndex = e.NewPageIndex;
searchOrders((string)ViewState[vsKey]);
}
protected void AspNetPager1_PageChanged(object src, EventArgs e)
{
searchOrders((string)ViewState[vsKey]);
}
//protected void btn_all_Click(object sender, EventArgs e)
//{
// ViewState[vsKey] = null;
// btn_all.Enabled = false;
// AspNetPager1.CurrentPageIndex = 1;
// searchOrders(null);
//}
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{ }
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
for (int i = 0; i < e.Item.Controls.Count; i++)
{
Control control = e.Item.Controls[i];
GetControl(control);
}
}
}
protected void GetControl(Control control)
{
foreach (Control c in control.Controls)
{ if (c.HasControls())
{
GetControl(c);
}
else
{
if (c.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
{
TextBox txt = c as TextBox;
txt.Attributes.Add("onclick", "Write('" + txt.ClientID + "');");
txt.Attributes.Add("onblur", "Update('" + txt.ClientID + "');");
}
}
}
}
protected void ddlp_SelectedIndexChanged(object sender, EventArgs e)
{//脚模板中的下拉列表框更改时激发 }
protected void Button2_Click(object sender, EventArgs e)
{
foreach(RepeaterItem item in Repeater1.Items)
{
TextBox txt=item.FindControl("txt") as TextBox ;
if(txt!=null){}
}
}
private static string strsql;
const string vsKey = "searchCriteria"; //ViewState key
SqlConnection con = new SqlConnection("server=localhost;database=moldsystem;uid=sa;pwd=sa");//这个是全局变量
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
searchOrders(string.Empty);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
AspNetPager1.CurrentPageIndex = 1;
string s = " where customer_name =" + TextBox4.Text;
ViewState[vsKey] = s;
searchOrders(s);
}
void searchOrders(string sWhere)
{
//SqlDataSource1.SelectCommand = "select * from " + sWhere + " ";
//DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
DataSet ds = new DataSet();
con.Open();
SqlDataAdapter sda = new SqlDataAdapter("select * from data_mold " + sWhere + " ", con);
sda.Fill(ds, "name");
con.Close();
AspNetPager1.RecordCount = ds.Tables["name"].Rows.Count; PagedDataSource pds = new PagedDataSource();
pds.DataSource = ds.Tables["name"].DefaultView;
pds.AllowPaging = true;
pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
pds.PageSize = AspNetPager1.PageSize;
Repeater1.DataSource = pds;
Repeater1.DataBind();
}
protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
//this.AspNetPager1.CurrentPageIndex = e.NewPageIndex;
searchOrders((string)ViewState[vsKey]);
}
protected void AspNetPager1_PageChanged(object src, EventArgs e)
{
searchOrders((string)ViewState[vsKey]);
}
//protected void btn_all_Click(object sender, EventArgs e)
//{
// ViewState[vsKey] = null;
// btn_all.Enabled = false;
// AspNetPager1.CurrentPageIndex = 1;
// searchOrders(null);
//}
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{ }
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
for (int i = 0; i < e.Item.Controls.Count; i++)
{
Control control = e.Item.Controls[i];
GetControl(control);
}
}
}
protected void GetControl(Control control)
{
foreach (Control c in control.Controls)
{ if (c.HasControls())
{
GetControl(c);
}
else
{
if (c.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
{
TextBox txt = c as TextBox;
txt.Attributes.Add("onclick", "Write('" + txt.ClientID + "');");
txt.Attributes.Add("onblur", "Update('" + txt.ClientID + "');");
}
}
}
}
protected void ddlp_SelectedIndexChanged(object sender, EventArgs e)
{//脚模板中的下拉列表框更改时激发 }
protected void Button2_Click(object sender, EventArgs e)
{
foreach(RepeaterItem item in Repeater1.Items)
{
TextBox txt=item.FindControl("txt") as TextBox ;
if(txt!=null){}
}
}
{
foreach(RepeaterItem item in Repeater1.Items)
{
TextBox txt=item.FindControl("txt") as TextBox ;
if(txt!=null){}
}
}
不是在这里写修改方法么
还有哪里?
可以在repeater中添加按钮列指定commandName 和参数
在事件中调用修改方法
对就是在这,但这个是遍历所有的行,我只想遍历当页的数据,然后怎么取出主键和每个单元格的字段update数据库?????
-------------------------------------这遍历的是你绑定的行, 就是当前页的数据
然后怎么取出主键和每个单元格的字段update数据库
-----------------------------------------
你可以把主键绑定在当前行的hidden 中, 需要修改值的单元格的 获取 按照你现在写的就可以只是FindControl 效率不高,但不影响你完成功能
http://dotnet.aspx.cc/file/Add-Delete-Update-Edit-Data-With-Paging-in-GridView.aspx
http://dotnet.aspx.cc/article/a933b187-06c3-4263-9eec-414a54d9c815/read.aspx
可以看看http://blog.csdn.net/pigHead_chen/archive/2010/06/08/5656671.aspx
仔细想想,就是想一点击保存按钮,遍历repeater当页的页面值,保存进数据库!
期待大侠帮忙没做过这样的,挠头。。
.textbox
{
width: 120px;
text-align: left;
border-width: 0px;
float: left;
margin:1px;
background-color:smokewhite;
}
.textboxClick
{
border-width: 1px;
border-color:Black;
border-bottom-width:1px;
border-left-width:1px;
width: 120px;
text-align: left;
float: left;
background-color:smokewhite;
}
</style>
<script type="text/javascript">
function DBClick(txtbox,txtOldId)
{
txtbox.readOnly=false;
txtbox.className="textboxClick";
txtbox.select();
txtOldId.value=txtbox.value;
}
function txtBlur(txtboxId,txtOldId,chkboxid)
{
txtboxId.readOnly=true;
txtboxId.className="textbox";
if(txtOldId.value==txtboxId.value)
{
if(chkboxid.checked)
{
chkboxid.checked=true;
}
else
{
chkboxid.checked=false;
}
}
else
{
chkboxid.checked=true;
}
}
function SelectClick(obj)
{
obj.className="textboxClick";
}
function mouseover(obj)
{
obj.style.cursor="text";
}
</script> <div style="width: 500px;border: dashed; border-color:Gray; border-width:thin;">
<asp:Repeater runat="server" ID="Repeater1"
OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<div id="itemDiv" runat="server" style=" border-width:2px; border-color:Black; width: 500px; cursor:text; background-color:smokewhite;">
<input type="hidden" class="textbox" id="txtID" runat="server" readonly="readonly" value='<%# Eval("id")%>' />
<div style="display:none">
<asp:CheckBox ID="isUpdate" runat="server" />
</div>
<input type="hidden" class="textbox" id="txtOldValue" runat="server" />
<input type="text" class="textbox" id="txtClass" runat="server" readonly="readonly" value='<%# Eval("班组")%>' />
<input type="text" class="textbox" id="txtName" runat="server" readonly="readonly" value='<%#Eval("姓名")%>' />
<input type="text" class="textbox" id="txtSubject" runat="server" readonly="readonly" value='<%#Eval("学科")%>'/>
<input type="text" class="textbox" id="txtScore" runat="server" readonly="readonly" value='<%# Eval("成绩")%>' />
</div>
</ItemTemplate>
</asp:Repeater>
</div>
<asp:Button ID="btnUp" runat="server" Text="修改" onclick="btnUp_Click" />
public static string sort { set; get; }
protected void Page_Load(object sender, EventArgs e)
{
#region 初始化绑定
if (!IsPostBack)
{
//创建和声明DataTable对象
total = new DataTable();
//给DataTable对象添加DataColumn对象
total.Columns.Add(new DataColumn("id", typeof(int)));
total.Columns.Add(new DataColumn("班组", typeof(string)));
total.Columns.Add(new DataColumn("姓名", typeof(string)));
total.Columns.Add(new DataColumn("学科", typeof(string)));
total.Columns.Add(new DataColumn("成绩", typeof(int)));
for (int i = 0; i < 10; i++)
{
//声明DataRow对象
DataRow dr = total.NewRow();
//给DataRow对象中的各列赋值
dr["id"]=i;
dr["班组"] = " 一班 " + i + ":" + 1;
dr["姓名"] = " 李宏 " + i + ":" + 1;
dr["学科"] = " 语文 " + i + ":" + 1;
dr["成绩"] = 98;
total.Rows.Add(dr);
}
//rptpay.DataSource = total;
//rptpay.DataBind();
Repeater1.DataSource = total;
Repeater1.DataBind();
}
#endregion
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
//HtmlGenericControl divitem = e.Item.FindControl("divItem") as HtmlGenericControl;
//CheckBox chkbox = e.Item.FindControl("isUpdate") as CheckBox;
//TextBox txtOldValue = e.Item.FindControl("txtOldValue") as TextBox;
//for (int i = 0; i < e.Item.Controls.Count;i++ )
//{
// Control control = e.Item.Controls[i];
// GetControl(control, chkbox.ClientID, txtOldValue.ClientID);
//} CheckBox chkbox = e.Item.FindControl("isUpdate") as CheckBox;
HtmlInputHidden txtOldValue = e.Item.FindControl("txtOldValue") as HtmlInputHidden; HtmlInputText txtClass = e.Item.FindControl("txtClass") as HtmlInputText;
HtmlInputText txtName = e.Item.FindControl("txtName") as HtmlInputText;
HtmlInputText txtScore = e.Item.FindControl("txtScore") as HtmlInputText;
HtmlInputText txtSubject = e.Item.FindControl("txtSubject") as HtmlInputText; SetAttributes(txtClass, txtOldValue.ClientID, chkbox.ClientID);
SetAttributes(txtName, txtOldValue.ClientID, chkbox.ClientID);
SetAttributes(txtScore, txtOldValue.ClientID, chkbox.ClientID);
SetAttributes(txtSubject, txtOldValue.ClientID, chkbox.ClientID);
}
}
protected void SetAttributes(HtmlInputText txt, string txtOldValueID, string checkboxid)
{
txt.Attributes.Add("ondblclick", "DBClick(" + txt.ClientID + "," + txtOldValueID + ");");
txt.Attributes.Add("onblur", "txtBlur(" + txt.ClientID + "," + txtOldValueID + "," + checkboxid + ");");
txt.Attributes.Add("onclick", "SelectClick(" + txt.ClientID + ");");
txt.Attributes.Add("onmouseover", "mouseover(" + txt.ClientID + ");");
}
protected void btnUp_Click(object sender, EventArgs e)
{
for(int i=0;i<Repeater1.Items.Count;i++)
{
HtmlInputHidden txtid = Repeater1.Items[i].FindControl("txtID") as HtmlInputHidden;
CheckBox chkbox = Repeater1.Items[i].FindControl("isUpdate") as CheckBox; HtmlInputText txtClass = Repeater1.Items[i].FindControl("txtClass") as HtmlInputText;
HtmlInputText txtName = Repeater1.Items[i].FindControl("txtName") as HtmlInputText;
HtmlInputText txtScore = Repeater1.Items[i].FindControl("txtScore") as HtmlInputText;
HtmlInputText txtSubject = Repeater1.Items[i].FindControl("txtSubject") as HtmlInputText;
int score=0;
int.TryParse(txtScore.Value, out score);
if (chkbox.Checked)
{
DataRow []row = total.Select("id="+txtid.Value);
row[0].BeginEdit();
row[0]["班组"] = txtClass.Value;
row[0]["姓名"] = txtName.Value;
row[0]["学科"] = txtSubject.Value;
row[0]["成绩"] = score;
row[0].EndEdit();
chkbox.Checked = false;
}
}
Repeater1.DataSource = total;
Repeater1.DataBind();
}