0

データリスト コントロールがあります

  <asp:DataList ID="DataList1" runat="server" DataKeyField="AdmissionNo" OnCancelCommand="DataList1_CancelCommand1"
            OnEditCommand="DataList1_EditCommand1" OnUpdateCommand="DataList1_UpdateCommand1"
            Width="300px">

            <ItemTemplate>
                <tr>
                    <td height="31px">
                        <asp:Label ID="lblStudentName" runat="server" Text="StudentName :" Font-Bold="true"></asp:Label>
                        <%# DataBinder.Eval(Container.DataItem, "StudentName") %>
                    </td>
                    <td height="31px">
                        <asp:LinkButton ID="lnkEdit" runat="server" CommandName="edit">Edit</asp:LinkButton>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblAdmissionNo" runat="server" Text="AdmissionNo :" Font-Bold="true"></asp:Label>
                        <%# DataBinder.Eval(Container.DataItem, "AdmissionNo")%>
                    </td>
                </tr>

                <tr>
                    <td height="31px">
                        <asp:Label ID="lblStudentRollNo" runat="server" Text="StdentRollNo :" Font-Bold="true"></asp:Label>
                        <%# DataBinder.Eval(Container.DataItem, "StdentRollNo") %>
                    </td>
                    <td height="31px">
                        <asp:LinkButton ID="lnkEditroll" runat="server" CommandName="edit">Edit</asp:LinkButton>
                    </td>
                </tr>
         </ItemTemplate>
            <EditItemTemplate>
                <tr>
                    <td height="31px">
                        <asp:Label ID="lblStudentName" runat="server" Text="StudentName :" Font-Bold="true"></asp:Label>
                        <asp:TextBox ID="txtProductName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "StudentName") %>'></asp:TextBox>
                    </td>
                    <td>
                        <asp:LinkButton ID="lnkUpdate" runat="server" CommandName="update">Update</asp:LinkButton>
                        <asp:LinkButton ID="lnkCancel" runat="server" CommandName="cancel">Cancel</asp:LinkButton>
                    </td>
                </tr>
                <tr>
                    <td height="31px">
                        <asp:Label ID="lblAdmissionNo" runat="server" Text="AdmissionNo :" Font-Bold="true"></asp:Label>
                        <%# DataBinder.Eval(Container.DataItem, "AdmissionNo")%>
                    </td>
                </tr>

                <tr>
                    <td height="31px">
                        <asp:Label ID="lblStudentRollNo" runat="server" Text="StudentRollNo :" Font-Bold="true"></asp:Label>
                        <asp:TextBox ID="txtStudentRollNo" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "StdentRollNo") %>'></asp:TextBox>
                    </td>
                    <td>
                        <asp:LinkButton ID="LinkButton1" runat="server" CommandName="update">Update</asp:LinkButton>
                        <asp:LinkButton ID="LinkButton2" runat="server" CommandName="cancel">Cancel</asp:LinkButton>
                    </td>
                </tr>
          </EditItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:DataList>

コードビハインド:

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            DataTable dt = new DataTable();
            dt = obj.GetSamples();

            DataList1.DataSource = dt;
            DataList1.DataBind();
        }

    }


    public void DataBind()
    {
        DataTable dt = new DataTable();
        dt = obj.GetSamples();

        DataList1.DataSource = dt;
        DataList1.DataBind();
    }

  protected void DataList1_EditCommand1(object source, DataListCommandEventArgs e)
    { 

        DataList1.EditItemIndex = e.Item.ItemIndex;

        DataBind();


    }

  protected void DataList1_CancelCommand1(object source, DataListCommandEventArgs e)
    {

        DataList1.EditItemIndex = -1;
        DataBind();

    }



  protected void DataList1_UpdateCommand1(object source, DataListCommandEventArgs e)
    { // Get the DataKey value associated with current Item Index.
      //  int AdmissionNo = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex]);
        string AdmissionNo = DataList1.DataKeys[e.Item.ItemIndex].ToString();

        // Get updated value entered by user in textbox control for
        // ProductName field.
        TextBox txtProductName;
        txtProductName = (TextBox)e.Item.FindControl("txtProductName");

        TextBox txtStudentRollNo;
        txtStudentRollNo = (TextBox)e.Item.FindControl("txtStudentRollNo");

        // string variable to store the connection string
        // retrieved from the connectionStrings section of web.config
        string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;

        // sql connection object
        SqlConnection mySqlConnection = new SqlConnection(connectionString);

        // sql command object initialized with update command text
        SqlCommand mySqlCommand = new SqlCommand("update SchoolAdmissionForm set StudentName=@studentname ,StdentRollNo=@studentroll where AdmissionNo=@admissionno", mySqlConnection);
        mySqlCommand.Parameters.Add("@studentname", SqlDbType.VarChar).Value = txtProductName.Text;
        mySqlCommand.Parameters.Add("@admissionno", SqlDbType.VarChar).Value = AdmissionNo;
        mySqlCommand.Parameters.Add("@studentroll", SqlDbType.VarChar).Value = txtStudentRollNo.Text;


        // check the connection state and open it accordingly.
        if (mySqlConnection.State == ConnectionState.Closed)
            mySqlConnection.Open();

        // execute sql update query
        mySqlCommand.ExecuteNonQuery();

        // check the connection state and close it accordingly.
        if (mySqlConnection.State == ConnectionState.Open)
            mySqlConnection.Close();

        // reset the DataList mode back to its initial state
        DataList1.EditItemIndex = -1;
        DataBind();
        //  BindDataList();

    }

しかし、それは正常に動作します....しかし、編集コマンドをクリックすると、両方のフィールド

1.学生名

2.StudentRollNo

特定のフィールドだけではなく、「編集」コマンドをクリックすると、テキストボックスを配置したすべてのフィールドにテキストボックスが表示されます。しかし、「編集」としてクリックしたフィールドに表示されるテキストボックスのみを取得する必要があり、編集モードであってもテキストボックスを表示せずに残りは同じままです。

4

1 に答える 1

0

あなたがあなたを設定しているとき、DataList1.EditItemIndexこれはアイテム全体に適用されます。item テンプレートは edit テンプレートに置き換えられます。これは、コントロール単位ではなく、項目テンプレート全体で行われます。

複数EditTemplateのテキストボックスがあるため、編集モードの行は、テンプレート内の単一のコントロールだけでなく、このテンプレート全体を反映します。DataList の編集インデックス全体を設定していることに注意してくださいDataList

DataList特定のレベルの編集テンプレートを制御したい場合は、コントロールがデータ行全体の編集を目的としているため、手動で行う必要があります。

于 2010-03-12T22:56:23.247 に答える