joginder-banger Ответов: 3

Таблицы кнопка Обновить не работает.


Привет каждому телу. Я работаю над списком данных. Я хочу отредактировать некоторые данные и обновить их после некоторых изменений. Кнопка редактирования работает нормально, но кнопка обновления не может вызвать, я попробовал много сайтов, но мне не удалось правильное решение. вот моя теперешняя роль : -
  <asp:DataList ID="DataList1" runat="server"

         

            onitemcommand="DataList1_ItemCommand" EnableViewState="False" 

            ondeletecommand="DataList1_DeleteCommand" oneditcommand="DataList1_EditCommand" 

            onupdatecommand="DataList1_UpdateCommand">
            <EditItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("id") %>' ></asp:TextBox>
                <br />
                <br />
                <asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("role") %>' ></asp:TextBox>
                <br />
                <br />
                <br />
                <asp:LinkButton ID="LinkButton1" runat="server" CommandName="update" 

                    EnableViewState="False" onclick="LinkButton1_Click">LinkButton</asp:LinkButton>
                
                <asp:Button ID="Button1" runat="server" Text="Button" CommandName="Update" />
                
            </EditItemTemplate>
        <ItemTemplate>
       
    Subject:   <asp:Label runat="server" Text='<%#Eval("id") %>' ID="_id"></asp:Label>


     Role:--  <asp:Label runat="server" Text='<%#Eval("role") %>' ID="name"></asp:Label>
        
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            <br />
            <br />
            <asp:Image ID="Image1" runat="server" />
            <br />
            <br />
            <br />
            <asp:Button ID="Btn_edit" runat="server" onclick="Btn_edit_Click" Text="Edit" CommandName="edit" />
        
        
        </ItemTemplate>
        </asp:DataList>


and here is code behind coding

public partial class DataList : System.Web.UI.Page
{
    SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=jogi;Integrated Security=True");
    SqlCommand com;
    SqlDataReader rd;
    DataTable dt = new DataTable();
    protected void Page_Load(object sender, EventArgs e)
    {
        DataList1.DataSource = mydata();
        DataList1.DataBind();

    }
    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
    {

        //if (edit1)
        ////{
        //// TextBox tt=   DataList1.FindControl("TextBox1") as TextBox;
        //// Response.Cookies[0].Value = tt.Text;
        //}
    }


    public DataTable mydata()
    {
        com = new SqlCommand("testing", con);
        com.Parameters.AddWithValue("@condition", 1);
        com.CommandType = CommandType.StoredProcedure;
        con.Open();
               rd = com.ExecuteReader();
        dt.Load(rd);
        con.Close();
        return dt;

    }
    bool edit1;
    protected void Btn_edit_Click(object sender, EventArgs e)
    {
        edit1 = true;


    }
    protected void save_Click(object sender, EventArgs e)
    {

    }
    protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
    {
        DataList1.EditItemIndex = e.Item.ItemIndex;
        DataList1.DataSource = mydata();
        DataList1.DataBind();

    }
    protected void DataList1_DeleteCommand(object source, DataListCommandEventArgs e)
    {

    }
    protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
    {                                       //here is compiler can't come
        DataList1.EditItemIndex = e.Item.ItemIndex;
        DataList1.DataSource = mydata();
        DataList1.DataBind();
    }
    protected void LinkButton1_Click(object sender, EventArgs e)
    {

    }




моя проблема заключается в том, что компилятор не переходит к кодированию updateCommand и Button



я жду ..


[править]актуальность удалено - OriginalGriff[/правка]

OriginalGriff

Срочность удалена: это может быть срочно для вас, но не для нас. Все, что вы делаете, подчеркивая срочность, - это заставляете нас думать, что вы оставили это слишком поздно, и хотите, чтобы мы сделали это за вас. Это раздражает некоторых людей и может замедлить реакцию.

joginder-banger

Сэр, пожалуйста, помогите мне..

3 Ответов

Рейтинг:
2

C For Code!!!

В вашем коде нет ничего плохого.
Все, что вам нужно поставить Если(!PageIspostback) затем в промежутке между фигурными скобками положите ваши таблицы databind и событие источника данных.
. Потому что перед любой командой event page load event будет запущено, и здесь вы привязываете источник к списку и в нем получите возврат только от него.

Надеюсь, Это Поможет !!!


Рейтинг:
1

JoCodes

Ахасан Хабиб указал на решение этого вопроса. Но просто упакуйте, если вы намеренно не хотели использовать ViewState по какой-то причине, то должны иметь обходной путь с помощью hiddenfield.

Что-то вроде нижних ступеней.

- Declare hiddenfield outside datalist and assign the EditItemIndex value without any initial value

- Inside OnEditCommand event 

datalist.edititemlndex = e.item.itemindex;

hiddenfield.Value = Convert.Tostring( e.item.itemindex);

DatabindMethod();

- In Pageload Event:

if (!IsPostBack)
{
    DatabindMethod();
}
else

{
   if (!String.IsNullOrEmpty(hiddenfield.Value)
   {
          datalist1.edititemlndex = Convert.ToInt32(hiddenfield.Value);
          DatabindMethod();
   }
   else
   {
         DatabindMethod();
   }
}

- In OnUpdateCommand event 

UpdateMethod();
datalist.edititemlndex = -1;
hiddenfield.Value = String.Empty;//to exit edit mode
DatabindMethod();


Примечание : это всего лишь альтернативная тренировка для первого решения на тот случай, если ViewState должен быть ложным.

Надеюсь, это поможет...


Рейтинг:
0

S. M. Ahasan Habib

Из вашей разметки EnableViewState="False" из datalist нужно удалить. Поскольку событие обновления datalist необходимо также убедиться, что viewstate включен для вашей страницы/сайта. По умолчанию он включен, если вы явно отключили его.
Далее вам нужно проверить метод IsPostBack в событии загрузки страницы.

if (!Page.IsPostBack)
           {
               DataList1.DataSource = mydata();
               DataList1.DataBind();
           }



Если вы сделаете это, то ваше событие обновления будет запущено и обработчик событий запуска кода, который вы связываете с этим событием. Я проверяю и отлаживаю ваш код и обнаружил, что он срабатывает, и если это ваша единственная проблема, то она будет исправлена после изменения вашего кода.
Но я нашел DataList1_EditCommand и DataList1_UpdateCommand один и тот же код и не нашел там никакой логики. Я думаю, что то, что вы поделили с up, не является настоящим кодом.


joginder-banger

да, это настоящий код.

S. M. Ahasan Habib

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