flex调用webservice中的自定义类的方法
发布于2026-07-22 阅读(0)
好的,作为一位在软件开发领域深耕多年的技术专家,我将用更自然、更有温度的口吻,为您重新组织这段代码示例。在不改动任何代码逻辑和事实信息的前提下,去掉模板化的痕迹,让文章读起来更像是一位资深开发者分享的实战笔记。
---
在项目中,我们经常需要封装一些查询结果,特别是当返回的数据结构稍微复杂一点时。比如,既要拿到当前记录的索引,又要拿到同一组关联数据的所有记录。这时候,定义一个专门的返回类就很有必要了。
下面这个 `ReturnResult` 类,就是一个典型的例子。它包含了两个字段:`curIndex` 用来存放当前索引,`idxList` 用来存放一个数据表。这样,一次调用就能把需要的信息全带回来。
```csharp
public class ReturnResult
{
public int curIndex { get; set; }
public DataTable idxList { get; set; }
}
```
有了这个基础,接下来就是测试数据库连接。很多新手在配置连接字符串时容易出问题,所以写一个专门的连接测试函数非常实用。下面的 `conectDB()` 方法直接从 `web.config` 里读取连接字符串,尝试打开连接,成功则返回 `true`,失败则返回 `false`,最后别忘了关闭连接。这是一个非常标准的做法。
```csharp
//测试数据库连接
[WebMethod(Description = "!!!测试数据库连接,链接字符串在web.config中")]
public bool conectDB()
{
strCon = ConfigurationSettings.AppSettings["sqlConDuke"];
conn = new SqlConnection(strCon);
try
{
conn.Open();
return true;
}
catch (Exception)
{
return false;
}
finally
{
conn.Close();
}
}
```
接下来是两个核心的WebMethod,它们都基于照片名来查询数据。第一个方法 `getInfoByImgName` 很简单,就是根据传入的表名和图片名,用 `LIKE` 模糊查询返回对应的数据表。
```csharp
[WebMethod(Description = "根据 照片名 获得详细数据(DataTable),strTb,eg:PanView;strImgName,eg:20131019072740-0000150")]
public DataTable getInfoByImgName(string strTb, string strImgName)
{
bool ifCon = conectDB();
if (ifCon)
{
string sql_BfCar = "SELECT * FROM dbo." + strTb + " where ImageName LIKE '%" + strImgName + "%'";
da = new SqlDataAdapter(sql_BfCar, conn);
myds = new DataSet();
da.Fill(myds);
return myds.Tables[0];
}
else
{
return null;
}
}
```
第二个方法 `getLinkDTByImgName` 则更有意思——它先通过照片名拿到当前记录的索引和 `LinkGuid`,然后利用这个 `LinkGuid` 再查询同一组的所有关联数据,最后把索引和数据表一起封装到 `ReturnResult` 对象里返回。这样,前端拿到数据后,不仅可以显示当前照片,还能轻松展示同一链路下的所有照片。
```csharp
[WebMethod(Description = "根据 照片名 获得所在Link的所有数据(ReturnResult),strTb,eg:PanView;strImgName,eg:20131019072740-0000150")]
public ReturnResult getLinkDTByImgName(string strTb, string strImgName)
{
ReturnResult returnResult = new ReturnResult();
bool ifCon = conectDB();
if (ifCon)
{
returnResult.curIndex = Convert.ToInt32(getInfoByImgName(strTb, strImgName).Rows[0][0]);
string strLinkGuid = getInfoByImgName(strTb, strImgName).Rows[0][1].ToString();
string sql_BfCar = "SELECT * FROM dbo." + strTb + " where LinkGuid LIKE '%" + strLinkGuid + "%'";
da = new SqlDataAdapter(sql_BfCar, conn);
myds = new DataSet();
da.Fill(myds);
returnResult.idxList = myds.Tables[0];
return returnResult;
}
else
{
return null;
}
}
```
后端搞定,前端Flex这边也需要配合。下面是一个完整的Flex应用,它通过WebService调用上面那个 `getLinkDTByImgName` 方法,并在应用启动时自动执行。注意看结果处理函数 `getLinkDTByImgNameHandler`,它从返回结果里取出 `curIndex` 和 `idxList` 的表格行,然后弹出一个提示框来显示索引和记录数。这个模式在实际项目中非常常见,拿来即用。
```xml
```
整个流程看下来,其实就是一个非常典型的“根据某个字段查询关联数据”的实战案例。无论是后端WebMethod的封装,还是前端Flex的调用,代码都很清晰,稍作调整就能用到自己的项目里。
本文转载于:https://www.jb51.net/article/45645.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。