qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

请求 调用数据库 前后台交互

今天做了点东西,用到的东西比较杂,总结下,以备以后查阅:

  1、首先需要将c#连数据库查出的一条记录的每个字段值取出来,我是将这条记录的字段放在了一个数组中,如下:

     string[] Infos=new string[3];
     public Array show2DcodeMsg(string id)
    {
        SqlConnection connection = new SqlConnection(strCon);
        String str = "SELECT ZCCCode,ZCCAddr,OfUserName FROM tbZCCInfo WHERE  ZCCCode=" + id;
        SqlCommand command = new SqlCommand(str, connection);
        command.Connection.Open();
        command.ExecuteNonQuery();  
        SqlDataReader datareader = command.ExecuteReader();
        while(datareader.Read())
        {
            string ZCCCode = datareader["ZCCCode"].ToString();
            string ZCCAddr = datareader["ZCCAddr"].ToString();
            string OfUserName = datareader["OfUserName"].ToString();
            Infos[0] = ZCCCode;
            Infos[1] = ZCCAddr;
            Infos[2] = OfUserName;
        }
        return Infos
     }

  我做的是http请求,参数获得是需要在page_load函数中提取,然后调用上面这个函数,大概后台代码是这样的:

protected void Page_Load(object sender, EventArgs e)
    {
        q_id = Request.QueryString["ID"]; 
        if (q_id == null || q_id == "")
        { 
            return;
        }
        {
            show2DcodeMsg(q_id);
        }     
    }


 前台的网页需要用到上面获取的Infos[]的值,这里一般都知道要在前台调用后台方法了,方法有ajax和jquery等,最简单的就是<%=方法名%>这种方式了,但是这里问题来了,是要<%=Page_Load(object sender, EventArgs e)%> ?这显然不合适,从参数上来说也能这么传,再说也没有调用Page_load这一说,怎么办呢?我是直接另写了三个方法:

 public string returncode()
    {
        return Infos[0];
    }
    public string returnAddr()
    {
        return Infos[1];
    }
    public string returnName()
    {
        return Infos[2];
    }

  这样在前台直接调用这三个方法不就行了。前台代码如下:

    <script type="text/javascript" language="javascript">
           var code="<%=returncode() %>";
           var addr="<%=returnAddr() %>";
           var name="<%=returnName() %>";
       function showInfos()
       {
//           var img123=doucumen.getElementById("imgCar");
//           img123.src="images/"+code+".jpg";
             imgCar.src="images/"+code+".jpg";
             li_num.innerHTML=code;
             li_addr.innerHTML=addr;
             li1.innerHTML=name;    
       }
    </script>

  方法showInfos()是在body的onload里执行。执行结果就是,运行网页,发送请求,查询数据库,返回的字段值直接显示在网页的控件上。

  后面还用到一个asp:Button的一个onclick事件,往服务器里上传数据,asp是服务其空间,只能直接调用后台cs方法,这个比较简单,直接就能调,问题来了:

前台:
<asp:Button ID = "testBtn" Text = "评价" runat = "server" 
                onclick="submit"/>
后台:
  protected void submit(object sender, EventArgs e)
    {
      ...
    }

  这是固定的格式,要注意几个地方:

  (1)前台方法名没有括号

  (2)后台方法有参数,并且就这样,我也不知道原因

  一开始我前台加括号,后台没参数,感觉太正常不过了,结果报错了

  submit 重载均与委托system.eventHandler不匹配。重载出问题自然就想到参数的问题了,但是不加括号不知道为什么,记住吧。

posted on 2013-08-20 14:11 顺其自然EVO 阅读(176) 评论(0)  编辑  收藏 所属分类: 数据库


只有注册用户登录后才能发表评论。


网站导航:
 
<2013年8月>
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜