1)给GridView的某行加颜色,在RowDataBound事件中
... {
if (e.Row.RowType == DataControlRowType.DataRow)
...{
int num = e.Row.Cells.Count;
if (e.Row.Cells[e.Row.Cells.Count - 2].Text.ToUpper().Trim() == "ERROR" )
...{
for (int i = 0; i < num; i++)
...{
e.Row.Cells[i].ForeColor = Color.Red;
}
}
}
}
2)根据XML文档去构建表结构
经过上周老万及其他同事的钻研,上周的技术问题(Ajax中与服务器控件的交互使用)终于有个结果,现把解决方案与大家共享.
由于该问题主要核心是怎样在脚本的ajax回调函数里面先调用取MODS数据(放在Session里面),然后再触发把Session值绑定到服务器控件上面,上周曾经采用过两种方案,
第一:在Page_Load中给服务器控件绑定脚本事件取出Mods数据放到Session中去(ButMODS.Attributes.Add("onclick", "javascript:getDataFormMods();");)然后再在ButMODS单击中把Session绑定到服务器控件上去. 这种方案按道理是可行的,但是我在测试中发现,执行时它会在执行脚本事件getDataFormMods时突然跳到ButMODS单击事件里面然后又返回到事件getDataFormMods执行,反复这样调用,引起的问题可想而知.
第二:在getDataFormMods()脚本文件最后取出数据后面加上这么一句document.getElementById('ButMODS').click();,意思是去触发绑定服务器事件.但问题有出现了,首先我在自己的开发环境中去测试没有问题,但是发布到服务器中,然后用其他客户端去调用报错:Access is denied.本意是不能访问服务器控件.
第三种也是可以解决办法的一种:也是在getDataFormMods()脚本文件最后去调用服务器中的回调函数目的是返回MODS数据绑定并实例化一个datagird类
var cc= document.getElementById("DG"); //DG是服务器控件GridView
cc.outerHTML=STS.Web.CarrierBooking.CarrierBookingImportMods.TestBindData().value; //取出的html赋值替换原先的html
public string TestBindData()
... {
GridView grid1 = new GridView();
grid1.DataSource = (DataTable)Session["MODSDATA"];
grid1.Style["width"] = "99%";
grid1.HeaderStyle.CssClass = "td_list";
grid1.AlternatingRowStyle.CssClass = "td_bg2";
grid1.DataBind();
System.IO.StringWriter strWriter = new System.IO.StringWriter();
HtmlTextWriter writer = new HtmlTextWriter(strWriter);
writer.Flush();
grid1.RenderControl(writer);
string result = strWriter.ToString();
return result; //返回实例好的html
}
参考资料类似
http://bc.webwoo.net/bencandy-17-35582-1.htm
如果第三种方案有同事有更好的办法,请及时与我取的联系,感谢大家的无私.
在此感谢老万及其他同事的辛苦研究.谢谢!
其实第二种办法也是解决问题的办法,只是把服务器控件换成html控件。最后解决问题的也是第二种办法。
4)javascript中怎样给table中新建一行,不能象
C#:
ds.Tables[0].Rows[i] = ds.Tables[0].NewRow();
......
dtShippingOrder.Rows.Add(dr);
javascript中应该是
ds.Tables[0].Rows[i] = []; //先新建一列为空
ds.Tables[0].Rows[i]["SO_NO"] = arrayofstrings[i];
不然的话,会产生第二行添加的数据会冲掉第一行的数据。
5)ajax中与服务器DataSet的交换
脚本中:
function areaResult()
{
var city = 1;
cb_GetModsData.GetCityList(city, get_mods_Result_CallBack);
}
function get_mods_Result_CallBack(response) //response-空的DataSet类型
{
var ds = response.value;
.........;
cb_GetModsData.ViewDataset(ds);
}
后台代码.cs中:
[AjaxMethod()]
public DataSet GetCityList(int povinceid)
{
DataSet ds = CreateDataTable();
return ds;
}
[AjaxMethod()]
public void ViewDataset(DataSet vdata)
{
vdata.....;
}
6)
ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('"+opt+" unsuccessful')</script>"); 弹出窗体信息
绑定下拉控件
this.DropCorg.DataSource = table.DefaultView;
this.DropCorg.DataTextField = "OrgName";
this.DropCorg.DataValueField = "OrgID";
this.DropCorg.DataBind();
7)Context.Items["MyObject"]=主要用法 1、在两个表单之间传递数据
Context.Items["WebForm1List"]=list; Server.Transfer("WebForm2.aspx");
对于WebForm2
ArrayListlist=Context.Items["WebForm1List"]asArrayList;