2012-09-24 52 views
0

我想知道如果我可以更改gridview中代碼隱藏的Container.DataItem。我的意思是,如果我想根據條件將Dataitem從「SellingPaymentMethod」更改爲「DeliveryPaymentmethod」。更改GridView的代碼隱藏的容器DataItem

我使用相同的存儲過程獲取銷售和交付信息。因此,如果它是銷售應該是SellingPaymentmethod,否則它應該是DeliveryPaymentmethod。這是使用C#的ASP.Net。

<asp:TemplateField ItemStyle-Width="70" ItemStyle-HorizontalAlign="Center"> 
    <ItemTemplate> 
     <asp:Label ID="lblSellingPaymentMethod" runat="server" 
     Text='<%#DataBinder.Eval(Container.DataItem,"SellingPaymentMethod") %>'> 
     </asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 



if(Condition1 = "Selling") 
{ 
    use sellingpaymentmethod container 
} 
else 
{ 
    use deliverypaymentmethod 
} 

編輯:

if (e.Row.RowType != DataControlRowType.DataRow) 
    { 
     return; 
    } 

    foreach (DataRow dtrCurrentRow in (((System.Data.DataView)grdDetail.DataSource)).Table.Rows) 
    { 
     //DataRow row = (DataRow)e.Row.DataItem; 
     Label lblPaymentMethod = e.Row.FindControl("lblPaymentMethod") as Label; 
     Label lblBalance = e.Row.FindControl("lblTotalSold") as Label; 
     Label lblBalanceCollected = e.Row.FindControl("lblTotalCollected") as Label; 

     if (lblTypeofDay.Text == "Selling") 
     { 
      lblPaymentMethod.Text = dtrCurrentRow["SellingPaymentMethod"].ToString(); 
     } 
     else if (lblTypeofDay.Text == "Delivery") 
     { 
      lblPaymentMethod.Text = dtrCurrentRow["DeliveryPaymentmethod"].ToString(); 
     } 
    } 

這是我如何使用你的代碼。我不確定爲什麼所有行都有paymentmethod列中的最後一行值。

,我已經在btnSubmit_OnClick函數的數據綁定代碼

DataView myDataView = new DataView(); 
myDataView = dsnew.Tables[0].DefaultView; 
grdDetail.DataSource = myDataView; 
grdDetail.DataBind(); 

回答

1

創建RowDataBound事件處理程序,並改變它。

.aspx的:

<asp:GridView id="gridView1" runat="server" 
    OnRowDataBound="gridView1_RowDataBound" /> 

代碼背後:

public void gridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType != DataControlRowType.DataRow) 
    { 
     return; 
    } 

    DataRow row = (DataRow)e.Row.DataItem; 

    Label lblSellingPaymentMethod = 
     e.Row.FindControl("lblSellingPaymentMethod") as Label; 

    if(condition == true) 
    { 
     lblSellingPaymentMethod.Text = row["sellingpaymentmethod"].ToString(); 
    } 
    else 
    { 
     lblSellingPaymentMethod.Text = row["deliverypaymentmethod"].ToString(); 
    } 
} 
+0

對於所有的行,PAYMENTMETHOD是表示作爲最後一個在表中。我的意思是這個值並不是堅持每一行,而是所有的行都有最後一行的值。爲什麼? – Ram

+0

我不知道我明白你的意思......你的'GridView'中的每一行都綁定到'DataSet'的最後一行?這應該不會發生,'e.Row.DataItem'是'DataSet'中當前行的'DataRow'。請發佈您的代碼並解釋發生了什麼。 –

相關問題