无法触发onItemCommand事件

时间:2012-06-19 09:40:15

标签: c# asp.net visual-studio-2010 telerik-grid

我无法在这里猜测问题,因为grid item命令的事件没有执行。我也改变了pageevent验证状态但没有用。 我正在粘贴.aspx代码以及 网格完美绑定

<telerik:RadGrid ID="frds" runat="server" OnItemCommand="go_frd" AutoGenerateColumns="false" >
<MasterTableView>
<Columns>
<telerik:GridTemplateColumn>
<ItemTemplate>
<asp:Button ID="bt" runat="server" CommandArgument='<%#Eval("frd_ID") %>' Text="test" />
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>

事件是这个

   protected void go_frd(object o, GridCommandEventArgs e)
{
    if (e.CommandName == "frd_go")
    {
        Response.Redirect("Profiling.aspx?uid=" + e.CommandArgument);
    }
    if (e.CommandName == "add_frd")
    {
        db_accessDataContext db = new db_accessDataContext();
        Frd_request req = new Frd_request();

        db.AddFriend(Int64.Parse(cur_mem_id), Int64.Parse(e.CommandArgument.ToString()));
        SqlConnection con = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand("dbo.addFriend", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(@"memID", Int64.Parse(cur_mem_id));
        cmd.Parameters.Add(@"frdID", Int64.Parse(e.CommandArgument.ToString()));
        try
        {
            con.Open();
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex) { }
    }
}

我尝试了很多方法但无法为网格中的按钮触发事件 我通过设置一个断点来检查它,麻烦的是它甚至没有开始执行事件 绑定COde

    string query = "my query containing the frd_id ,works fine in query builder and it also is shown grid view "; 
try { SqlConnection con = new SqlConnection(connectionString);
 SqlDataAdapter adapter = new SqlDataAdapter(query, con); 
adapter.Fill(d0); con.Close(); 
} catch (Exception ex) { } 
frds.DataSource = d0; 
frds.DataBind();

3 个答案:

答案 0 :(得分:1)

您需要设置CommandName:

<asp:Button ID="bt" runat="server" 
     CommandName="frd_go" 
     CommandArgument='<%#Eval("frd_ID") %>' Text="test" />

答案 1 :(得分:1)

今天我遇到了类似的问题。 在我的radgrid中,我有代码来构建sql并在page_load事件中填充radgrid,但我忘了添加

if(!IsPostBack){}

围绕这段代码,所以每次加载网格时都会重建网格,并且onitemcommand方法无效。该页面似乎是在按钮点击或rowclick上回发,但该事件并未触发。尝试在数据绑定周围添加if(!isPostback)代码,您可能会发现它适合您。

答案 2 :(得分:0)

您需要为EnablePostBackOnRowClicktrue属性设置为ClientSettings。但是这会导致完整的回复。

.
.
.
</MasterTableView>
<ClientSettings EnablePostBackOnRowClick="true"> 
</ClientSettings>
</telerik:RadGrid>

您可以查看此thread on Telerik forums