首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

返回值有关问题

2012-04-01 
返回值问题cs.页面publicstringgetString(){DataSetdsDBAcess.GetDataSet( select*fromrolewherer_idin(

返回值问题
cs.页面

  public       string   getString()
        {
                DataSet   ds   =DBAcess.GetDataSet( "select   *   from   role   where   r_id   in(select   r_id   from   u_r_relation   where   u_id= ' "   +   objectid   +   " ') ",   true);
                string   r_name   =   " ";
                string   r_id   =   " ";
                for   (int   i   =   0;   i   <   ds.Tables[0].Rows.Count;   i++)
                {
                        r_name   =   ds.Tables[0].Rows[i][ "r_name "].ToString();
                        r_id   =   ds.Tables[0].Rows[i][ "r_id "].ToString();
                        return   "document.getElementById( 'Select2 ').add(new   Option( ' "   +   r_name   +   " ', ' "   +   r_id   +   " ',true)); ";
                }
          }


前台  

        <select   id= "Select2 "   name= "dltTarget "   multiple   >
                </select>


  <script   type= "text/javascript ">
<%=getString()%>
</script>          


现在我执行页面的话,就会报
“Test2.getString()”:   并非所有的代码路径都返回值

请问下大家应该如何解决

[解决办法]
你的return 语句写到for循环体里去了,for循环可能一次都不执行,所以系统认为可能没有返回值,考虑在循环体外return一个值
[解决办法]
public string getString()
{
DataSet ds =DBAcess.GetDataSet( "select * from role where r_id in(select r_id from u_r_relation where u_id= ' " + objectid + " ') ", true);
string r_name = " ";
string r_id = " ";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
r_name = ds.Tables[0].Rows[i][ "r_name "].ToString();
r_id = ds.Tables[0].Rows[i][ "r_id "].ToString();

}
return "document.getElementById( 'Select2 ').add(new Option( ' " + r_name + " ', ' " + r_id + " ',true)); ";
}
[解决办法]
FOR循环可能因为条件不成立而不执行,在FOR循环体外没有return语句,所以报错。
你这个return放在for循环体内,是不恰当的。
[解决办法]
public string getString()
{
DataSet ds =DBAcess.GetDataSet( "select * from role where r_id in(select r_id from u_r_relation where u_id= ' " + objectid + " ') ", true);
string r_name = " ";
string r_id = " ";
// 这里,如果ds.Tables[0].Rows.Count==0,也就不会执行return.


for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
r_name = ds.Tables[0].Rows[i][ "r_name "].ToString();
r_id = ds.Tables[0].Rows[i][ "r_id "].ToString();
return "document.getElementById( 'Select2 ').add(new Option( ' " + r_name + " ', ' " + r_id + " ',true)); ";
}
// 在这里加return语句.return什么,看你需要.
}
[解决办法]
你可以在For循环外面return 一个string数组

也可以定义一个字符串,用指定的标记把每次循环的需要返回的字符串分割开,然后再掉用函数的地方对返回字符串进行拆分

函数遇到return会结束
[解决办法]
第一个return了后面就根本不会执行到

热点排行