OnRowCommand没有开火

时间:2011-11-23 04:00:32

标签: c# asp.net sql webforms

我无法让OnRowCommand解雇。什么看错了?这用于显示来自sql server的数据库,其中包含来自每个行的链接。它使用MVC和visual studio 2010构建在c#中

我不知道程序出了什么问题,我在这个页面和site.master页面都启用了ViewStateMode,并尝试编辑太长时间,看起来有什么不对吗?

顺便说一下,这是我们第一次使用c#MVC或asp.net,所以代码在这方面可能有点草率。

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
    Inherits="System.Web.Mvc.ViewPage<Teamsone.Models.Student>" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Registration
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<form id="form1" runat="server">
<h2>Classes offered for Next Semester [Spring 2012]</h2>

<script runat="server">

protected void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e)
{
  int index = Convert.ToInt32(e.CommandArgument);
  GridViewRow row = GridView1.Rows[index];

  // Create a new ListItem object for the contact in the row.     
  ListItem item = new ListItem();
  item.Text = "weeeee!";

  ContactsListBox.Items.Add(item);
}

</script>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
              OnRowCommand="GridView1_RowCommand" allowpaging="true" DataKeyNames="SectionKey"
              DataSourceID="SqlDataSource1" EnableViewState = "true">
    <Columns>
        <asp:BoundField DataField="FacultyKey" HeaderText="FacultyKey" 
            SortExpression="FacultyKey" />
        <asp:BoundField DataField="SectionKey" HeaderText="SectionKey" ReadOnly="True" 
            SortExpression="SectionKey" />
        <asp:BoundField DataField="CourseKey" HeaderText="CourseKey" 
            SortExpression="CourseKey" />
        <asp:BoundField DataField="SectionDay" HeaderText="SectionDay" 
            SortExpression="SectionDay" />
        <asp:BoundField DataField="SectionTime" HeaderText="SectionTime" 
            SortExpression="SectionTime" />
        <asp:BoundField DataField="SectionSemester" HeaderText="SectionSemester" 
            SortExpression="SectionSemester" />
        <asp:BoundField DataField="SectionYear" HeaderText="SectionYear" 
            SortExpression="SectionYear" />
        <asp:BoundField DataField="ClassroomKey" HeaderText="ClassroomKey" 
            SortExpression="ClassroomKey" />
       <asp:buttonfield buttontype="Link" 
              commandname="Add" 
              text="Add"/>
    </Columns>
</asp:GridView>
<asp:listbox id="ContactsListBox" runat="server" Height="200px" Width="200px"/>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT * FROM [NextCourse]"></asp:SqlDataSource>
</form>
</asp:Content>

1 个答案:

答案 0 :(得分:1)

ASP.NET MVC仅使用视图来呈现html - 所以在这种情况下,如果您使用ASP.NET网页或用户控件作为视图,那么它将仅用于呈现输出html。

包含控件事件的整个回发后模型将无法正常工作,因为ASP.NET MVC控制器将拦截POST请求。 ASP.NET页面没有机会处理请求(并随后引发回发事件)。

此外,您似乎不了解ASP.NET MVC模型,并且您想开始阅读更多相关内容 - 请参阅http://msdn.microsoft.com/en-us/magazine/cc337884.aspx