2013-05-23 9 views
2

Я использую gridview для представления данных в asp.net, но когда я нажимаю ссылку на обновление, ничего не происходит. Когда я отслеживаю код, я нашел перезагрузку страницы без ввода метода обновления. Кроме того, я пытаюсь решить эту проблему по-разному, но не повезло.Обновление строки в GridView не работает

<%@ Page Title="" Language="C#" MasterPageFile="~/ins.Master" 
    AutoEventWireup="true" CodeBehind="ins_topic2.aspx.cs" 
    Inherits="RFID_SAMS.ins_topic2"%> 

<asp:GridView ID="GridView1" runat="server" 
    OnRowDataBound="GridView1_RowDataBound"  
    onrowediting="GridView1_RowEditing" 
    onrowupdating="GridView1_RowUpdating" 
    OnRowCancelingEdit="GridView1_RowCancelingEdit" AllowPaging="true" 
    DataKeyNames="Week#/Day"> 
      <Columns> 
       <asp:TemplateField> 
    <ItemTemplate> 
      <asp:LinkButton ID="btnedit" runat="server" CommandName="Edit" 
      Text="Edit"/>  
    </ItemTemplate> 
     <EditItemTemplate> 
      <asp:LinkButton ID="btnupdate" runat="server" CommandName="Update" 
      Text="Update" /> 
      <asp:LinkButton ID="btncancel" runat="server" CommandName="Cancel" 
      Text="Cancel"/> 
     </EditItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
</asp:GridView> 

и код за это:

protected void Page_Init(object sender, EventArgs e) 
{ 
    try 
    { 
     connetionString = "Server=petunia.arvixe.com;Database=rfid-sams;User 
     Id=rfid-sams-admin;Password=10100;MultipleActiveResultSets=true"; 
     cnn = new SqlConnection(connetionString); 
     cnn.Open(); 
    }//end try connection 
    catch (Exception ex) 
    { 
     Response.Write(ex); 
    } 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     View_lectures_topic(); 
    } 
}// end page_load 

protected void View_lectures_topic() 
{ 
    week_num = 1; 
    DataTable table = new DataTable(); 
    DataRow dr; 

    table.Columns.Add("Week#/Day"); 
    table.Columns.Add("Saturday"); 
    table.Columns.Add("Sunday"); 
    table.Columns.Add("Monday"); 
    table.Columns.Add("Tuesday"); 
    table.Columns.Add("Wednesday"); 

    for (int i = 1; i < 17; i++) 
    { 
     dr = table.NewRow(); 
     dr[0] = "Week " + i; 
     table.Rows.Add(dr); 
    } 

    for (int i = 0; i < 16; i++) 
    { 
     query1 = "select * from [M].[Lecture] where [sec_no] = '" + 
       section + "'AND [week_no]='" + week_num + 
       "' Order by [date];"; 
     checkuser1 = new SqlCommand(query1, cnn); 
     rdr1 = checkuser1.ExecuteReader(); 

     while (rdr1.Read()) 
     { 
      date = Convert.ToDateTime(rdr1["date"].ToString()); 
      day = (int)date.DayOfWeek; 
      day = day + 2; 

      if (day == 1 || day == 8) 
      { 
       sat = true; 
       table.Rows[i][1] = rdr1["topic"].ToString(); 
      } 
     }//end while 
     week_num++; 
    }//end for loop 

    GridView1.DataSource = table; 
    GridView1.DataBind(); 
} 


     protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
    { 

     GridView1.EditIndex = e.NewEditIndex; 

     View_lectures_topic(); 

    } 

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex]; 
    string week; 
    //week = row.FindControl("Week#/Day").ToString(); 
    week = row.Cells[0].Controls[0].ToString(); 

    query1 = "select * from [M].[Lecture] where [sec_no] = '" + section + 
      "' AND [week_no]='" + week + "' Order by [date];"; 
    checkuser1 = new SqlCommand(query1, cnn); 
    rdr1 = checkuser1.ExecuteReader(); 
    SqlCommand cmd; 

    while (rdr1.Read()) 
    { 
     date = Convert.ToDateTime(rdr1["date"].ToString()); 
     day = (int)date.DayOfWeek; 
     day = day + 2; 

     if (sat == true && (day == 1 || day == 8)) 
     { 
      cmd = new SqlCommand("UPDATE [M].[Lecture] set [topic]='" + 
           row.Cells[1].Controls[0].ToString() + 
           "' where [date]='" + rdr1["date"].ToString() + 
           "' AND [sec_no]='" + section + "';", cnn); 
      cmd.ExecuteNonQuery(); 
     }// end if 
    }// end while 

      GridView1.EditIndex = -1; 
      //call binding method 
      View_lectures_topic(); 
}// end method 

Не могли бы вы помочь мне решить эту проблему?

+0

Я не вижу метод «GridView1_RowEditing» в вашем коде. Я слепой, или он отсутствует? –

+0

Я обновляю вопрос, теперь вы можете найти метод GridView1_RowEditing. – user2211482

ответ

0

Вы можете посмотреть по следующей ссылке. Вы можете улучшить представление об обновлении. http://www.thecollegehunt.com/topic/aspnet-gridview-row-updating-update-rows-through-gridview

дайте мне знать, если вам нужна дополнительная помощь.

+0

Я пытаюсь решить его, используя код в этой ссылке, но ничего не происходит. отладчик не входит в метод обновления. – user2211482

+0

Замените кнопку Command на ImageButton и установите в CommandName = «Обновить». Для замены вы можете найти мой ответ на http://stackoverflow.com/questions/16735569/how-to-add-events-to-buttons-of-gridview -in-asp-net/16735823? noredirect = 1 # comment24102836_16735823 –

+0

Ничего не происходит :( – user2211482

0
<asp:CommandField ButtonType="Image" EditImageUrl="images/edit.png" 
     ShowEditButton="True" CommandName="Update" /> 

Вы забыли добавить

CommandName = "Обновить"

Просто проверить, если это правильный ответ на вашу проблему. Прощайте!

+0

Я нашел эту ошибку Сообщение об ошибке Parser: Тип 'System.Web.UI.WebControls.CommandField' не имеет открытого свойства с именем 'CommandName когда я написал CommandName в поле команды – user2211482

+0

, попробуйте создать другое gridview и добавить кнопку обновления –

+0

. Я добавил его, но ничего не произошло :( – user2211482

Смежные вопросы