我有一个 datalist 控件
<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
当我单击“编辑”命令而不是单独的特定字段时,我将文本框添加到我放置文本框的所有字段中。但我应该只获得对我单击为“编辑”的字段可见的文本框,其余部分保持不变而不显示文本框,即使它处于编辑模式。