2012-02-21 2 views
0

эй друзей я хочу, чтобы избежать постбэк по щелчку кнопки изображения, вот мой код: -избежать AutoPostBack в виде сетки

Он имеет GridView с кнопкой изображения для редактирования строки выбранного

<form id="form1" runat="server"> 
    <asp:Label ID="lblsearch" Text="Search by" runat="server"></asp:Label> 
    <asp:DropDownList ID="ddlsearch" runat="server" OnSelectedIndexChanged="SearchProject" AutoPostBack="true"> 
    <asp:ListItem Text="Select" Value="select" Selected="True"></asp:ListItem> 
    </asp:DropDownList>       
    <asp:Button ID="btnclear" runat="server" Text="Clear" OnClick="btnclear_Click" /> 
    <asp:Label ID="lblsearchmsg" runat="server" ForeColor="#FF3300"></asp:Label> 
    <br /> 
    <asp:GridView ID="gviewprojectallocation" runat="server" CellPadding="4" 
     ForeColor="Black" GridLines="Vertical" EnableViewState="true" 
     AutoGenerateColumns="False" BackColor="White" BorderColor="#DEDFDE" 
     BorderStyle="None" BorderWidth="1px" 
     onrowcommand="gviewprojectallocation_RowCommand" 
     onrowcancelingedit="gviewprojectallocation_RowCancelingEdit" 
     onrowediting="gviewprojectallocation_RowEditing" 
     onrowupdating="gviewprojectallocation_RowUpdating"> 
     <AlternatingRowStyle BackColor="White" /> 
     <FooterStyle BackColor="#CCCC99" /> 
     <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> 
     <RowStyle BackColor="#F7F7DE" /> 
     <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> 
     <SortedAscendingCellStyle BackColor="#FBFBF2" /> 
     <SortedAscendingHeaderStyle BackColor="#848384" /> 
     <SortedDescendingCellStyle BackColor="#EAEAD3" /> 
     <SortedDescendingHeaderStyle BackColor="#575357" /> 
     <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
      <asp:ImageButton CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' runat="server" id="ImageButton1" ImageUrl="~/images/edit.png" CommandName="Edit"/> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField DataField="associate_id" ReadOnly="true" HeaderText="Associate ID"/> 
     <asp:BoundField DataField="Associate_Name" ReadOnly="false" HeaderText="Associate Name" /> 
     <asp:BoundField DataField="involve_percent" ReadOnly="false" HeaderText="Involve %" /> 
     </Columns> 
    </asp:GridView> 
</form> 
<br /> 
</center> 

код позади: -

// загрузить информацию в DropDownList на странице загрузки

protected void Page_Load(object sender, EventArgs e) 
{ 
    SqlConnection myconnection = new SqlConnection(constring); 
    SqlCommand mycommand = new SqlCommand(); 
    mycommand.Connection = myconnection; 
    int i = 1; 

    SqlDataReader mydatareader = null; 
    myconnection.Open(); 
    mycommand.CommandText = "select Project_Code,Project_Name from Project_Status_Report;"; 
    mycommand.CommandType = CommandType.Text; 

    mydatareader = mycommand.ExecuteReader(); 
    if (!IsPostBack) 
    { 
    while (mydatareader.Read()) 
    { 
     ddlsearch.Items.Add((string)mydatareader["Project_Name"]); 
     ddlsearch.Items[i].Value = Convert.ToString(mydatareader["Project_Code"]); 
     i++; 
    } 
    } 
    myconnection.Close(); 
} 

// для поиска на основе значения, выбранного в DropDownList: -

protected void SearchProject(object sender, EventArgs e) 
{ 
    try 
    { 
    SqlConnection myconnection = new SqlConnection(constring); 
    SqlCommand mycommand = new SqlCommand(); 
    DataSet mydataset = new DataSet(); 
    SqlDataAdapter mydataadapter = new SqlDataAdapter(); 

    if (ddlsearch.SelectedValue == "select") 
    { 
     Response.Redirect("ProjectAllocation.aspx"); 
    } 
    else 
    { 
     mycommand.CommandText = "select P.associate_id,T.Associate_Name,P.involve_percent from Associates_Info as T inner join Associate_Project as P on T.Associate_ID=P.associate_id where P.project_code = @procode;"; 
     mycommand.Parameters.Add("@procode", SqlDbType.Int); 
     mycommand.Parameters["@procode"].Value = ddlsearch.SelectedValue; 

     mycommand.CommandType = CommandType.Text; 
     myconnection.Open(); 
     mycommand.Connection = myconnection; 

     mydataadapter.SelectCommand = mycommand; 

     mydataadapter.Fill(mydataset); 

     if (mydataset == null || mydataset.Tables.Count == 0 || mydataset.Tables[0].Rows.Count == 0) 
     { 
     lblsearchmsg.Text = "Record not found"; 
     } 

     gviewprojectallocation.DataSource = mydataset; 
     gviewprojectallocation.DataBind(); 

     myconnection.Close(); 
    } 
    } 
    catch (Exception exp) 
    { 
    lblsearchmsg.Text = "Enter valid information"; 
    } 
} 

// строка команды из GridView: -

protected void gviewprojectallocation_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Edit") 
    { 
    int index = Convert.ToInt32(e.CommandArgument); 
    GridViewRow row = gviewprojectallocation.Rows[index]; 
    } 
} 

// решетчатый вид редактирования ряд событий

protected void gviewprojectallocation_RowEditing(object sender, GridViewEditEventArgs e) 
{       
    gviewprojectallocation.EditIndex = e.NewEditIndex; 
    gviewprojectallocation.DataBind(); 
} 

ответ

0

Если я правильно читаю ваш вопрос, вы можете попробовать добавить OnClientClick='return confirm_ambiguous_functionality();' в свое определение вашего ImageButton, а также javascript. Или вы просто можете просто вернуть его (например, javascript:void(0);) в зависимости от предполагаемой функциональности.

<script type="text/javascript"> 
    function confirm_ambiguous_functionality() { 
     return confirm("Are you sure you want to do whatever action you just clicked on?"); 
    } 
</script> 
+0

благодарит Брайана, что он работает, но теперь кнопку изображения нужно дважды щелкнуть .., чтобы увидеть изменения –

+0

Просмотрели ли вы HTML-код, отображаемый сервером? Что вызывает обратную связь? Возможно, вы захотите попробовать только с помощью LinkButton. –

0

Я думаю, что лучший сценарий, который будет идти с вашей ситуацией, чтобы поставить GridView в панель обновления и сделать весь процесс частичной пост обратно, так как вам нужно изображение кнопки, чтобы перейти к серверу, поскольку вы говорят, что кнопка изображения используется для редактирования выбранной строки.

Смежные вопросы