BST技术积累

1)给GridView的某行加颜色,在RowDataBound事件中

 

         protected   void  DG_RowDataBound( object  sender, GridViewRowEventArgs e)
        
{
            
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

 

[AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
        
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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值