0

我有两个文本框,一个下拉菜单和两个按钮。当我在文本框中输入值时,从下拉列表中选择值并按button1,我的数据将存储在数据库中,当我单击 时,我可以在我的网格中查看它button2

但问题是,当我在button2不输入任何详细信息的情况下按下它时,它应该显示我在文本框和下拉列表中添加的验证错误。

aspx.cs 的代码

protected void Button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=EMS;Integrated Security=True");
    con.Open();

    string UserName = TextBox1.Text;
    string Password = TextBox2.Text;
    string Role = DropDownList1.Text;

    using (SqlCommand cmd = con.CreateCommand())
    {
        cmd.CommandText = "insert into Login(UserName,Password,Role) values('" + UserName + "','" + Password + "','" + Role + "')";
        cmd.Parameters.AddWithValue("@UserName", TextBox1.Text);
        cmd.Parameters.AddWithValue("@Password", TextBox2.Text);
        cmd.Parameters.AddWithValue("@Role", DropDownList1.Text);
        cmd.ExecuteNonQuery();
    }

    con.Close();
    TextBox1.Text = string.Empty;
    TextBox2.Text = string.Empty;
    DropDownList1.Text = string.Empty;
    TextBox1.Focus();
} 
protected void Button2_Click1(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=EMS;Integrated Security=True");
    con.Open();

    using (SqlCommand cmd = con.CreateCommand())
    {
        SqlCommand com = new SqlCommand("Select * from Login", con);
        SqlDataAdapter sda = new SqlDataAdapter(com);

        DataSet ds = new DataSet();
        sda.Fill(ds);

        GridView1.DataSource = ds;
        GridView1.DataBind();
    }
    con.Close();
}

aspx 的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
    .style1
    {
        width: 100%;
        height: 178px;
    }
    .style3
    {
        width: 87px;
    }
    .style4
    {
        width: 87px;
        height: 110px;
    }
    .style5
    {
        height: 110px;
    }
</style>
 </head>
 <body style="height: 387px">
<form id="form1" runat="server">
  <div>
            <tr>
            <td class="style3">
          &nbsp;User name</td>
            <td>
         <asp:TextBox ID="TextBox1" runat="server" style="margin-left: 0px"> </asp:TextBox>
              &nbsp;&nbsp;
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                    ControlToValidate="TextBox1" ErrorMessage="Enter User Name" Font- Bold="True">*</asp:RequiredFieldValidator>
            </td>
            </tr>
              <tr>
            <td class="style3">
                Password</td>
            <td>
    <asp:TextBox ID="TextBox2" runat="server" TextMode="Password"></asp:TextBox>
    &nbsp;&nbsp;
                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                    ControlToValidate="TextBox2" ErrorMessage="Enter Password" Font- Bold="True">*</asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
            <td class="style3">
                Select Role</td>
            <td>
                <asp:DropDownList ID="DropDownList1" runat="server">
                    <asp:ListItem>Select One</asp:ListItem>
                    <asp:ListItem>Admin</asp:ListItem>
                    <asp:ListItem>Manager</asp:ListItem>
                    <asp:ListItem>User</asp:ListItem>
                    <asp:ListItem></asp:ListItem>
                </asp:DropDownList>
                  <asp:RequiredFieldValidator ID="RequiredFieldValidator3"  runat="server" 
                    ControlToValidate="DropDownList1" ErrorMessage="Select Role">*</asp:RequiredFieldValidator>
                &nbsp;</td>
            </tr>
             <tr>
            <td class="style4">
                </td>
            <td class="style5">
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Sumit" />

    <asp:ValidationSummary ID="ValidationSummary1" runat="server" Height="65px" />

            </td>
        </tr>
        </table>

</div>
<p>
                             &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <asp:Button ID="Button2" runat="server" onclick="Button2_Click1" Text="Show" />
                &nbsp;</p>
<p>

                  

4

6 回答 6

1

请将第二个按钮的验证组属性设置为任何值,如下所示:

validationgroup="xyz"

并让我知道问题是否仍然存在。

于 2013-02-20T11:39:49.040 回答
0

您可以尝试提供ValidationGroup要验证的控件。
通过使用此属性,您可以对特定控件设置验证。
尝试这样做。让我知道这是否解决了您的问题。

于 2013-02-20T11:54:46.357 回答
0

如果您希望在客户端进行验证,请尝试将按钮的 Causesvalidation 属性设置为 true。

  Causesvalidation=true;
于 2013-02-20T11:55:28.807 回答
0
protected void Button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=EMS;Integrated Security=True");
    con.Open();

    string UserName = TextBox1.Text;
    string Password = TextBox2.Text;
    string Role = DropDownList1.Text;

    using (SqlCommand cmd = con.CreateCommand())
    {
        cmd.CommandText = "insert into Login(UserName,Password,Role) values('" + UserName + "','" + Password + "','" + Role + "')";
        cmd.Parameters.AddWithValue("@UserName", TextBox1.Text);
        cmd.Parameters.AddWithValue("@Password", TextBox2.Text);
        cmd.Parameters.AddWithValue("@Role", DropDownList1.Text);
        cmd.ExecuteNonQuery();
    }

    con.Close();
    TextBox1.Text = string.Empty;
    TextBox2.Text = string.Empty;
    DropDownList1.Text = string.Empty;
    TextBox1.Focus();
} 
protected void Button2_Click1(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=EMS;Integrated Security=True");
    con.Open();

    using (SqlCommand cmd = con.CreateCommand())
    {
        SqlCommand com = new SqlCommand("Select * from Login", con);
        SqlDataAdapter sda = new SqlDataAdapter(com);

        DataSet ds = new DataSet();
        sda.Fill(ds);

        GridView1.DataSource = ds;
        GridView1.DataBind();
    }
    con.Close();
}
于 2013-10-07T12:09:02.983 回答
0

检查你在哪里写的

string.Empty; -> This is making your textbox empty.

因此,您将无法在 button2_click() 上访问其值。由于文本框控件为空,因此引发验证错误。有断点并检查哪里出了问题并纠正它。

建议

使用nbsp;for space in markup 会在不同的浏览器中以不同的方式呈现您的页面。我建议你使用

<span style="margin:0 0 0 20px"> Some text here</span> 

用于内联样式。

于 2013-02-20T11:42:14.680 回答
0

标记删除:[我已经添加了我的样本,没关系改变它]

<asp:TemplateField HeaderText="modify">
  <ItemTemplate>
    <asp:ImageButton ID="imgmodify" CommandName="modify" runat="server" ImageUrl="~/database/images/edit.jpg" ToolTip="Edit" Height="20px" Width="20px"/>

 </ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Remove">
  <ItemTemplate>
  <asp:ImageButton ID="imgbtnDelete" CommandName="Delete" CommandArgument='<%#Eval("catID") %>' runat="server" ImageUrl="~/database/images/DeleteRed.jpg" ToolTip="Delete" Height="20px" Width="20px" />
</ItemTemplate>
</asp:TemplateField>

代码:

 protected void gvcat_rowcmd(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "modify")
    {
        //Your edit code here..
         Page.ClientScript.RegisterStartupScript(this.GetType(), "Call my function", "editpopup();", true);
    }
    if (e.CommandName == "Delete")
    {
        //Your delete code here
        categoryID = Convert.ToInt32(e.CommandArgument);
        Session["cat"] = categoryID;
        Page.ClientScript.RegisterStartupScript(this.GetType(), "Call my function", "showpopup();", true);
    }
}

要删除行:

 if (e.CommandName == "delete")
    {
      int productcode = Convert.ToInt32(e.CommandArgument);
        string Cond = "Pid=" + productcode;
        DataRow[] mrow = dtCartItems.Select(Cond);
        if (mrow.Length > 0)
        {
            mrow[0].Delete();
        }
        dtCartItems.AcceptChanges();
        mrow = dtCartItems.Select();
        gridbind();
     }
于 2013-02-21T10:51:29.807 回答