读书人

返回值有关问题

发布时间: 2012-04-01 17:23:46 作者: rapoo

返回值问题
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了后面就根本不会执行到

读书人网 >asp.net

热点推荐