我有Repeater
按钮,它会使用Repeater
控件显示项目。但我想在鼠标悬停时将数据加载到ImageButton
而不是单击图像按钮,因此我尝试使用Web服务方法加载数据。
这是我的<asp:ImageButton ID="ImageButton1" runat="server" CssClass="hoverimgbtn" onmouseover="openalert(this)" value='<%#Eval("categoryid") %>' onmouseout="closealert()"/>
:
function openalert(i){
var a = i.value;
}
我将鼠标上按钮的categoryid值传递给java脚本,如下所示:
function openalert(i)
{
var a = i.value;
var sParam = a;
$.ajax({
type: "Post",
url: "Brands.aspx/loadSubCategories",
data: "{s:sParam}", // passing the parameter
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
$("#divResult").html("success");
alert('hello');
},
error: function (e) {
$("#divResult").html("Something Wrong.");
alert(e);
}
});
}
在此之后将i(categoryid)传递给Web服务方法我添加了以下代码:
[WebMethod]
public static void loadSubCategories(string s)
{
if (HttpContext.Current != null)
{
Page page = (Page)HttpContext.Current.Handler;
Repeater rep = (Repeater) page.FindControl("RepCateg");
SqlConnection serviceconn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
serviceconn.Open();
string sql = "select categoryname,categoryid from categories where parentcategoryid='" + s + "'";
SqlDataAdapter dap = new SqlDataAdapter(sql, serviceconn);
DataTable dt = new DataTable();
dap.Fill(dt);
serviceconn.Close();
rep.DataSource = "";
rep.DataBind();
rep.DataSource = dt;
rep.DataBind();
}
}
java脚本和Web服务方法都在单页Brands.aspx
中声明这是我的web方法,它会将categoryid匹配的项目从类别表加载到Repeater
{{1}}
我无法弄清楚为什么我的webservice方法没有被调用。 我在同一页面上编写了Web服务方法Brands.aspx.cs