GridView Edit Event запускается после 2 кликов - PullRequest
1 голос
/ 23 марта 2011

У меня есть GridView, который имеет функции редактирования / обновления. Однако, когда я нажимаю на него один раз, он не стреляет. Я должен нажать на нее снова, чтобы выстрелить. Остальная часть работает нормально.

Может кто-нибудь сказать мне, что происходит? Вот разметка для моего GV:

<asp:GridView ID="gvShowRegistration" runat="server" 
     Height="204px" Width="678px" 
    OnRowEditing = "gvShowRegistration_RowEditing" 
    OnRowUpdating = "gvShowRegistration_RowUpdating" 
    OnRowCancelingEdit = "gvShowRegistration_RowCancelingEdit" CssClass="menu">
    <Columns>
    <asp:CommandField HeaderText="Edit" ShowEditButton="True" ShowHeader="True" ShowSelectButton="True" />
    </Columns>
 </asp:GridView>


 public partial class Testing : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
            string getEntity = Request.QueryString["EntityID"];
            int getIntEntity = Int16.Parse(getEntity);

            TestLinq2SqlVs1DataContext dt = new TestLinq2SqlVs1DataContext();
            var tr = from r in dt.Users
                     join s in dt.Entities on r.Entity_ID equals s.ID
                     where s.ID == getIntEntity
                     select new
                     {


                     };

            gvShowRegistration.DataSource = tr;
            gvShowRegistration.DataBind();


    }



    protected void gvShowRegistration_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        //Update code goes here!!!

    }


    protected void gvShowRegistration_RowEditing(object sender, GridViewEditEventArgs e)
    {
        gvShowRegistration.EditIndex = e.NewEditIndex;

    }


    protected void gvShowRegistration_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        gvShowRegistration.EditIndex = -1;

    }


}

Ответы [ 3 ]

2 голосов
/ 23 марта 2011

Я не ожидаю, что вы выберете мой ответ, но вы должны заключить текстовые данные в блок using:

protected void Page_Load(object sender, EventArgs e)
{
        string getEntity = Request.QueryString["EntityID"];
        int getIntEntity = Int16.Parse(getEntity);
        using (TestLinq2SqlVs1DataContext dt = new TestLinq2SqlVs1DataContext())
        {
          var tr = from r in dt.Users
                   join s in dt.Entities on r.Entity_ID equals s.ID
                   where s.ID == getIntEntity
                   select new
                   {


                   };

          gvShowRegistration.DataSource = tr;
          gvShowRegistration.DataBind();
        }
}

. Он автоматически упаковывает ваш LINQ в блок try / catch и удаляет его.об этом после.

1 голос
/ 26 августа 2013

Поместите код, который вы написали в событии page_load, в функцию, подобную

private void Binddata()
{


        string getEntity = Request.QueryString["EntityID"];
        int getIntEntity = Int16.Parse(getEntity);

        TestLinq2SqlVs1DataContext dt = new TestLinq2SqlVs1DataContext();
        var tr = from r in dt.Users
                 join s in dt.Entities on r.Entity_ID equals s.ID
                 where s.ID == getIntEntity
                 select new
                 {


                 };

        gvShowRegistration.DataSource = tr;
        gvShowRegistration.DataBind();

}

И вызовите эту функцию для событий row_editing и row_cancellingedit, подобных этому

 protected void gvShowRegistration_RowEditing(object sender, GridViewEditEventArgs e)
    {
        gvShowRegistration.EditIndex = e.NewEditIndex;
        Binddata(); 
    }

protected void gvShowRegistration_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        gvShowRegistration.EditIndex = -1;
        Binddata();
    }
1 голос
/ 23 марта 2011

Поместите это в другой метод

private void BindData(int id)
{
            TestLinq2SqlVs1DataContext dt = new TestLinq2SqlVs1DataContext();
            var tr = from r in dt.Users
                     join s in dt.Entities on r.Entity_ID equals s.ID
                     where s.ID == id                     select new
                     {


                     };

            gvShowRegistration.DataSource = tr;
            gvShowRegistration.DataBind();
}

Загрузка страницы делает это:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostback())
    {
        BindData(Request.QueryString["EntityId"]);
    }
}

Это только половина исправления, что вызывает изменение EntityId?Это изменится на обратных передачах?Если это так, вам придется приспособиться к этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...