Обновление панелей асинхронно_ - PullRequest
0 голосов
/ 23 июня 2010

Я хочу обновить панели (panel1 и panel2) асинхронно. Однако при загрузке страницы, если я пытаюсь отредактировать строку и обновить ее, RequiredFieldValidator на Panel1 выдает сообщение об ошибке *, а ссылка на обновление строки не работает !. После добавления компании из panel1 ссылка на обновление начинает работать. Как я могу решить проблему?

<asp:UpdatePanel ID="updatepanel1" runat="server" UpdateMode="Conditional" >
    <ContentTemplate>
        <div id="div1">   
            <table>
                <tr>
                   <td><b>Company Name</b></td>
                   <td>
                   <asp:TextBox ID="company" runat="server" ></asp:TextBox>    
                   </td>
                   <td>
                   <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="company" ErrorMessage="*"
                   Display="Dynamic" ></asp:RequiredFieldValidator> 
                   </td>
                </tr>
                <tr>
                   <td></td>
                   <td>
                   <asp:Button ID="submitbut" runat="server" Text="Submit" onclick="submit_Click" />
                   </td>
               </tr>    
            </table>
       </div>                
    </ContentTemplate>   
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="submitbut" EventName="Click"/>
    </Triggers>
</asp:UpdatePanel>

<asp:UpdatePanel ID="updatepanel2" runat="server" UpdateMode="Always" >
    <ContentTemplate>    
        <div id="div3">     
            <asp:GridView ID="grid1" runat="server" DataSourceID="sqlSource1" DataKeyNames="id"
            AutoGenerateColumns="false" 
            BackColor="White" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" 
            CellPadding="3" ForeColor="Black" GridLines="Vertical">
                <Columns>
                    <asp:CommandField ShowSelectButton="true" ButtonType="Image" SelectImageUrl="~/Images/select.gif" />
                    <asp:CommandField ShowDeleteButton="true" ButtonType="Image" DeleteImageUrl="~/Images/delete.gif" />
                    <asp:CommandField ShowEditButton="true" ButtonType="Image" EditImageUrl="~/Images/edit.gif" UpdateImageUrl="~/Images/update.png" CancelImageUrl="~/Images/delete.gif" />
                    <asp:BoundField DataField="id" HeaderText="Company ID" />
                    <asp:BoundField DataField="name" HeaderText="Company Name" />        
                </Columns>    
                <FooterStyle BackColor="#CCCCCC" />
                <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
                <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
                <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
                <AlternatingRowStyle BackColor="#CCCCCC" />
            </asp:GridView>

            <asp:SqlDataSource ID="sqlSource1" runat="server" 
             ConnectionString="<%$ ConnectionStrings:BTConnectionString %>" 
             ProviderName="System.Data.SqlClient"
             SelectCommand="SELECT * FROM Company"
             UpdateCommand="UPDATE Company SET name = @name WHERE ( id = @id )"
             DeleteCommand="DELETE FROM Company WHERE ( id = @id )" >
             <UpdateParameters>
                 <asp:Parameter Name="name" Type="String" />
                 <asp:Parameter Name="id" Type="Int32" />
             </UpdateParameters>
             <DeleteParameters>
                <asp:Parameter Name="id" Type="Int32" />
             </DeleteParameters>   
             </asp:SqlDataSource>
        </div>   
    </ContentTemplate> 
</asp:UpdatePanel>       

protected void Page_Load(object sender, EventArgs e)
{

}


protected bool IsatDatabase(string companyName)
{
    SqlApplication con = new SqlApplication();
    Int32 count = 0;

    try
    {
        SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM BT.dbo.Company WHERE ( name = @com )",
                                        con.GetConnection());
        cmd.Parameters.AddWithValue("@com", companyName);
        con.OpenSqlConnection();

        count = (Int32)cmd.ExecuteScalar();

        if (count == 0)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
    catch (Exception err)
    {
        System.Diagnostics.Debug.WriteLine("Exception: " + err.Message);
        return true;
    }
    finally
    {
        con.CloseSqlConnection();
    }
}



protected void submit_Click(object sender, EventArgs e)
{
    SqlApplication con = new SqlApplication();
    try
    {
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con.GetConnection();
        cmd.CommandText = "INSERT INTO BT.dbo.Company VALUES ( @com )";

        cmd.Parameters.AddWithValue("@com", company.Text);
        con.OpenSqlConnection();

        if (!IsatDatabase(company.Text))
        {
            SqlDataReader reader = cmd.ExecuteReader();
            reader.Close();
            grid1.DataBind();
        }
    }
    catch (Exception err)
    {
        System.Diagnostics.Debug.WriteLine("Exception: " + err.Message);
    }
    finally
    {
        con.CloseSqlConnection();
    }
}

}

1 Ответ

0 голосов
/ 23 июня 2010

Вы можете установить CausesValidation = "false" в элементах управления отправкой, чтобы предотвратить проверку этого элемента управления, если это то, что вы хотите

Когда вы говорите, что ссылка для обновления не работает, что вы имеете в виду? Если вы ставите точку останова на функцию Submit_Click, она вызывается?

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